Cod sursa(job #1687054)

Utilizator Daria09Florea Daria Daria09 Data 12 aprilie 2016 17:28:40
Problema Multimi2 Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("multimi2.in");
ofstream g("multimi2.out");
int n,dif,a[1000001],b[1000001],carda,cardb;
void rest0()
{
    dif=0; int i;for(i=1;i<=n/2;i+=2){a[++carda]=i; b[++cardb]=i+1;a[++carda]=n-i+1; b[++cardb]=n-i;}
}
void rest1()
{
    dif=1; int i; a[++carda]=1; for(i=2;i<=n/2;i+=2){a[++carda]=i; b[++cardb]=i+1;a[++carda]=n-i+2; b[++cardb]=n-i+1;}
}
void rest2()
{
    dif=1; int i; a[++carda]=1; b[++cardb]=2; for(i=3;i<=n/2;i++){a[++carda]=i; b[++cardb]=i+1; a[++carda]=n-i+3; b[++cardb]=n-i+2; }
}
void rest3()
{
    dif=0;int i; a[++carda]=1; a[++carda]=2; b[++cardb]=3; for(i=4;i<=n/2+1;i++){a[++carda]=i; b[++cardb]=i+1; a[++carda]=n-i+4; b[++cardb]=n-i+3; }
}
void solve()
{
    f>>n;
    if(n%4==0)rest0(); else
    if(n%4==1)rest1(); else
    if(n%4==2)rest2(); else
    if(n%4==3)rest3();
}
void afisare()
{
    g<<dif<<'\n'; int i; g<<carda<<'\n';
    for(i=1;i<=carda;i++)g<<a[i]<<" "; g<<'\n';
    g<<cardb<<'\n'; for(i=1;i<=cardb;i++)g<<b[i]<<" ";
}
int main()
{
    solve(); afisare();
    return 0;
}