Cod sursa(job #1549006)

Utilizator SilviuIIon Silviu SilviuI Data 11 decembrie 2015 19:36:57
Problema Multimi2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <stdio.h>
#define nmax 1000010
using namespace std;
int n,i,first[nmax],second[nmax],st,dr;
int main() {
freopen("multimi2.in","r",stdin);
freopen("multimi2.out","w",stdout);
scanf("%d",&n);
if (n==2) { printf("1\n1\n1\n1\n2"); return 0; }
if (n==3) { printf("0\n2\n1 2\n1\n3"); return 0; }
if (n%2==0) {
    st=1; dr=n; int b=0,bb=0;
    for (i=1;i<=n/4;i++) {
        b++; first[b]=st; b++; first[b]=dr;
        st++; dr--;
        bb++; second[bb]=st; bb++; second[bb]=dr;
        st++; dr--;
    }
    if (n%4==0) {
       printf("%d\n%d\n",0,b);
       for (i=1;i<=b;i++) printf("%d ",first[i]);
       printf("\n%d\n",bb);
       for (i=1;i<=bb;i++) printf("%d ",second[i]);
    } else {
       b++; first[b]=st; bb++; second[bb]=dr;
       printf("%d\n%d\n",1,b);
       for (i=1;i<=b;i++) printf("%d ",first[i]);
       printf("\n%d\n",bb);
       for (i=1;i<=bb;i++) printf("%d ",second[i]);
    }
} else {
    st=2; dr=n; int b=0,bb=0;
    for (i=1;i<=n/4;i++) {
        b++; first[b]=st; b++; first[b]=dr;
        st++; dr--;
        bb++; second[bb]=st; bb++; second[bb]=dr;
        st++; dr--;
    }
    b++; first[b]=1;
    if ((n+1)%4==0) printf("0\n"); else printf("1\n");
    printf("%d\n",b);
    for (i=1;i<=b;i++) printf("%d ",first[i]);
    printf("\n%d\n",bb);
    for (i=1;i<=bb;i++) printf("%d ",second[i]);
}
return 0;
}