Pagini recente » Cod sursa (job #3210922) | Cod sursa (job #1161228) | Cod sursa (job #2807423) | Cod sursa (job #469750) | Cod sursa (job #123125)
Cod sursa(job #123125)
// infoarena --> 25 puncte;
// Trebuie modificat back() si valid()
//#include<iostream.h>
#include<math.h>
#include<stdio.h>
//#include<time.h>
long d[100],fr[100],n;
//long t1,t2;
int mod(long x,long y){
if(x>y)return x-y;
else return y-x;
}
void back(long i){
long val;
for(val=1;val<=n;val++)
if(fr[val]==0){
d[i]=val;
fr[val]=1;
int ok=1;
for(long p=1;p<i;p++){
if(d[i]==d[p]){ok=0;break;}
if(mod(d[p],d[i])==mod(p,i)){ok=0;break;}
}
if(ok==1)
if(i==n){
printf("%ld\n",n);
for(long p=1;p<=n;p++)
printf("%ld %ld\n",p,d[p]);
n=-1;
break;
}
else back(i+1);
fr[val]=0;
}
}
int main(){
//t1=clock();
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);
//t2=clock();
//printf("Timp: %f",(t2-t1)/18.2);
return 0;
}