Cod sursa(job #1528744)

Utilizator raulmuresanRaul Muresan raulmuresan Data 19 noiembrie 2015 23:19:00
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <fstream>
#define DIM 1000000
using namespace std;

ifstream fin ("multimi2.in" );
ofstream fout("multimi2.out");

int N, i, j, k, ok, k1, k2;
int A[DIM], B[DIM], dif;

void Case_1(){
     for(i = 1; i <= N; i += 4){
        A[++k1] = i; A[++k1] = i+3;
          B[++k2] = i+1; B[++k2] = i+2;
     }
     dif = 0;
     return;
}

void Case_2(){
     for(i = 2; i <= N; i += 4){
          A[++k1] = i; A[++k1] = i+3;
          B[++k2] = i+1; B[++k2] = i+2;
     }
     A[++k1] = 1;
     dif = 1;
     return;
}

void Case_3(){
     for(i = 3; i <= N ; i += 4){
          A[++k1] = i; A[++k1] = i+3;
          B[++k2] = i+1; B[++k2] = i+2;
     }
     A[++k1] = 1;
     B[++k2] = 2;
     dif = 1;
     return;
}

void Case_4(){
     for(i = 4; i <= N; i += 4){
          A[++k1] = i; A[++k1] = i+3;
          B[++k2] = i+1; B[++k2] = i+2;
     }
     A[++k1] = 1;
     A[++k1] = 2;
     B[++k2] = 3;
     dif = 0;
     return;
}

void Switch(){
     fin >> N;
     if(N % 4 == 0)
          Case_1();
     else
          if(N % 4 == 1)
               Case_2();
          else
               if(N % 4 == 2)
                    Case_3();
               else
                    if(N % 4 == 3)
                         Case_4();
     return;
}

void Finish(){
     fout << dif << "\n";
     fout << k1  << "\n";
     for(i = 1; i <= k1; i ++)
          fout << A[i] << " ";
     fout << "\n";
     fout << k2  << "\n";
     for(i = 1; i <= k2; i ++)
          fout << B[i] << " ";
     return;
}

int main(){
     Switch();
     Finish();
     return 0;
}