Cod sursa(job #1728149)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 12 iulie 2016 13:00:36
Problema Dame Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<cstdio>
#define MAXN 1010
using namespace std;
int v[MAXN];
void Solve(int n){
    int i,index=0,start,temp;
    if(n==1||n==2){
        printf("1\n1 1");
        return;
    }
    if(n==3){
        printf("2\n1 1\n2 3");
        return;
    }
    for(i=2;i<=n;i+=2){
        index++;
        v[index]=i;
    }
    if(n%12==3||n%12==9){
        for(i=1;i<index;i++)
            v[i]=v[i+1];
        v[index]=2;
    }
    start=index;
    for(i=1;i<=n;i+=2){
        index++;
        v[index]=i;
    }
    if(n%12==8)
        for(i=start+1;i<=index;i+=2){
            temp=v[i];
            v[i]=v[i+1];
            v[i+1]=temp;
        }
    if(n%12==2){
        temp=v[start+1];
        v[start+1]=v[start+2];
        v[start+2]=temp;
        for(i=start+3;i<=index;i++)
            v[i]=v[i+1];
        v[index]=5;
    }
    if(n%12==3||n%12==9){
        for(i=start+1;i<=start;i+=2){
            v[i]=v[i+1];
            v[i+1]=v[i+3];
        }
        v[index-1]=1;
        v[index]=3;
    }
    printf("%d\n",n);
    for(i=1;i<=n;i++)
        printf("%d %d\n",i,v[i]);
}
int main(){
    freopen("dame.in","r",stdin);
    freopen("dame.out","w",stdout);
    int n;
    scanf("%d",&n);
    Solve(n);
    return 0;
}