Pagini recente » Cod sursa (job #2195405) | Cod sursa (job #1212650) | Cod sursa (job #777086) | Cod sursa (job #1992007) | Cod sursa (job #1942309)
// solutia este luata cu tot dragul de la articolul cu solutii
// am implementat-o doar ca sa stiu sa nu mai mai apuc de asa ceva
#include <cstdio>
#define MAXN 1000
int v[MAXN+1];
int main(){
int n;
FILE *fin, *fout;
fin=fopen("dame.in", "r");
fout=fopen("dame.out", "w");
fscanf(fin, "%d", &n);
if(n<3) fprintf(fout, "1\n1 1\n");
else if(n==3) fprintf(fout, "2\n1 1\n2 3\n");
else{
int k=0;
for(int i=2; i<=n; i+=2)
v[++k]=i;
if((n%12==9)||(n%12==3)){
for(int i=1; i<k; i++)
v[i]=v[i+1];
v[k]=2;
}
int u=k;
for(int i=1; i<=n; i+=2)
v[++k]=i;
if(n%12==8){
for(int i=u+1; i<=k; i+=2){
int aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
}
}else if(n%12==2){
int aux=v[u+1];
v[u+1]=v[u+2];
v[u+2]=aux;
for(int i=u+3; i<k; i++)
v[i]=v[i+1];
v[k]=5;
}else if((n%12==9)||(n%12==3)){
for(int i=u+1; i<k-1; i++)
v[i]=v[i+2];
v[k-1]=1;
v[k]=3;
}
fprintf(fout, "%d\n", n);
for(int i=1; i<=n; i++)
fprintf(fout, "%d %d\n", i, v[i]);
}
fclose(fin);
fclose(fout);
return 0;
}