1.A. Difference Row
#include<iostream>
#include<algorithm>
using namespace std;
const int m=120;
int a[m],e[m];
int main()
{
int n,min1=1005,max1=-1005;
cin>>n;
for(int i=0;i<n;i++)
{cin>>a[i];}
sort(a,a+n);
int t;
t=a[0];
a[0]=a[n-1];
a[n-1]=t;
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
2.fixed points
#include<iostream>
using namespace std;
const int m=100005;
int a[m];
int main()
{
int n,cnt=0,k=0;
cin>>n;
for(int i=0;i<n;i++)
{cin>>a[i];
if(a[i]==i)
cnt++;
}
for(int i=0;i<n;i++)
{
if(a[i]!=i)
{
if(a[a[i]]==i)
{k=1;
break;
}
}
}
if(cnt<=n-2)
{
if(k) cnt=cnt+2;
else cnt++;
}
cout<<cnt<<endl;
return 0;
}
3.Alice and Bob
#include<iostream>
#include<algorithm>
using namespace std;
int a[300];
int gcd(int a,int b)
{
if(b==0)return a;
return gcd(b,a%b);
}
int main()
{
int n;
cin>>n;
int k=0,h=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(a[i]>k) k=a[i];
}
//sort(a,a+n);
int min1=1000000005;
int t=gcd(a[0],a[1]);
for(int i=1;i<n;i++)
{
t=gcd(t,a[i]);
if(t<min1) min1=t;
}
//cout<<min1<<endl;
if(min1==1000000005)
min1=1;
//cout<<t<<endl;
for(int i=0;i<n;i++)
{
a[i]=a[i]/min1;
}
k=k/min1;
int j=k-n;
if(j%2) cout<<"Alice"<<endl;
else cout<<"Bob"<<endl;
return 0;
}