Cod sursa(job #29082)

Utilizator s120489Martonos Stefan s120489 Data 8 martie 2007 16:44:37
Problema Dame Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include<fstream.h>
int main()
{int n,i,j,st[1000];
ifstream f("dame.in");
f>>n;
f.close();
if(n==1||n==2||n==3||n==9)
{
ofstream g("dame.out");
if(n==1)
{g<<1<<"\n";
g<<1<<" "<<1;
}
else if(n==2){  g<<1<<"\n"; g<<1<<" "<<1;}
else if(n==3){  g<<2<<"\n"; g<<1<<" "<<2<<"\n"; g<<3<<" "<<1;}
else if(n==9){  g<<9<<"\n"; g<<"1 1\n2 3\n3 6\n4 8\n5 2\n6 4\n7 9\n8 7\n9 5";     }

g.close();
}
else
if(n>3)
{
if(n%6==2)
{
st[1]=n-1;
st[n/2+1]=n-2;
st[n/2+2]=n;
st[n/2+3]=n-6;
st[n]=n-4;
for(i=2;i<=n/2;i++)
st[i]=st[i-1]-2;
for(i=n/2+4;i<=n-1;i++)
st[i]=st[i-1]-2;
}
else
if((n%2==0&&n%6!=2)||(n%2==1&&n%6!=3))
{
st[1]=n-1;
for(i=2;i<=n/2;i++)
st[i]=st[i-1]-2;
st[n/2+1]=n;
for(i=n/2+2;i<=n;i++)
st[i]=st[i-1]-2;
}
else
if(n%6==3&&n%12==3)
{ st[1]=1;
st[2]=n/2;
for(i=3;i<=3*(n/12+1);i++)
st[i]=st[i-1]+2;
st[3*(n/12+1)+1]=3;
for(i=3*(n/12+1)+2;i<=3*(n/12+1)+n/12+3;i++)
st[i]=st[i-1]+2;
st[n]=n/2+1;
for(i=n-1;i>n-(3*(n/12)+1);i--)
st[i]=st[i+1]-2;
st[n-(3*(n/12)+1)]=n-1;
for(i=n-(3*(n/12)+2);i>=n/2+2;i--)
st[i]=st[i+1]-2;
}

else
if(n%6==3&&n%12==9)
{
st[1]=n-2;
st[2]=n;
for(i=3;i<=n/2;i++)
st[i]=st[i-2]-4;
st[n/2+1]=2;
st[n/2+2]=n-1;
for(i=n/2+3;i<n;i++)
st[i]=st[i-1]-2;
st[n]=1;
}
ofstream g("dame.out");
g<<n<<"\n";
for(i=1;i<=n;i++)
g<<i<<" "<<st[i]<<"\n";
g.close();
 }
return 0;
}