Pagini recente » Cod sursa (job #2138172) | Cod sursa (job #1250506) | Cod sursa (job #1374517) | Cod sursa (job #2139477) | Cod sursa (job #123110)
Cod sursa(job #123110)
// infoarena --> 20 puncte;
// Trebuie modificat back() si valid()
//#include<iostream.h>
#include<math.h>
#include<stdio.h>
int d[1000],fr[1000],n;
void tip(int i){
int l,c;
printf("%ld\n",n);
//cout<<n<<endl;
for (l=1;l<=i;l++)
printf("%ld %ld\n",l,d[l]);
//cout<<l<<" "<<d[l]<<endl;
n=-1;
}
int mod(int x,int y){
if(x>y)return x-y;
else return y-x;
}
int valid(int i){
int p;
for(p=1;p<i;p++)
{
if(d[p]==d[i])return 0;
if(mod(d[p],d[i])==mod(p,i)) return 0;
}
return 1;
}
void back(int i){
int val;
for(val=1;val<=n;val++)
{
if(fr[val]==0){
d[i]=val;
fr[val]=1;
if(valid(i))
if(i==n)tip(i);
else back(i+1);
}
fr[val]=0;
}
}
int main(){
freopen("dame.in","r",stdin);
freopen("dame.out","w",stdout);
scanf("%ld",&n);
//cin>>n;
if(n==1){printf("1\n");printf("1 1");}
if(n==2){printf("1\n");printf("1 1");}
if(n==3){printf("2\n");printf("1 1\n");printf("3 2\n");}
if(n==4){printf("3\n");printf("1 1\n");printf("2 4\n");printf("3 2\n");}
if(n==5){printf("5\n");printf("1 1\n");printf("2 3\n");printf("3 5\n");printf("4 2\n");printf("5 4\n");}
if(n>5)back(1);
return 0;
}