Cod sursa(job #1540508)

Utilizator justsomedudePalade Thomas-Emanuel justsomedude Data 2 decembrie 2015 20:58:25
Problema Multimi2 Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.06 kb
#include<iostream>
#include<fstream>
#define nmax  1000009

using namespace std;

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

int a[nmax], n;

void Completeaza()
{
   fin >> n;
   int i;
   for (i=1; i<=n+2; i++)
        a[i] = i;
}

void First_case()
{
   int i;
   fout << "0\n";        /// diferenta minima intre multimile formate e 0

   fout << n/2 <<"\n";          /// numarul de elemente
   for (i=1; i<n/2; i=i+2)
      fout << a[i] << " ";

   for (i=n; i>n/2; i=i-2)
      fout << a[i] << " ";

   fout <<"\n" << n/2 << "\n";          /// numarul de elemente
   for (i=2; i<=n/2; i=i+2)
      fout << a[i] << " ";

   for (i=n-1; i>=n/2; i=i-2)
      fout << a[i] << " ";
}

void Second_case()
{
   int i;
   fout << "1\n";

   fout << (n/2+1) << "\n";

   fout << "1 " << n-1 << " ";

   for (i=2; i<n/2; i=i+2)
      fout << a[i] << " " << a[n-i] << " ";

   fout << (n/2) << "\n";

   fout << n/2 << "\n";

   fout << n << " " << (n/2+1) << " ";

   for (i=3; i<n/2; i=i+2)
      fout << a[i] << " " << a[n-i] << " ";

   fout << "\n";
}

void Third_case()
{
   int i;
   fout << "1\n";

   fout << n/2 << "\n";

   for (i=1; i<n/2; i=i+2)
      fout << a[i] << " " << a[n-i] << " ";

   fout << (n/2) << "\n";

   fout << n/2 << "\n"; /// numarul de elemente din b

   fout << (n/2+1) << " ";

   for (i=2; i<n/2; i=i+2)
      fout << a[i] << " " << a[n-i] << " ";

}

void Fourth_case()
{
   int i;
   fout << "1\n";

   fout << (n/2+1) << "\n";

   fout << "1 " << n-1 << " ";

   for (i=2; i<=n/2; i=i+2)
      fout << a[i] << " " << a[n-i] << " ";

   fout << "\n" << n/2 << "\n";

   fout << n << " ";

   for (i=3; i<=n/2; i=i+2)
      fout << a[i] << " " << a[n-i] << " ";

   fout << "\n";
}

void Rezolva()
{
   if (n%4 == 0) First_case();
   else if (n%4 == 1) Second_case();
   else if (n%4 == 2) Third_case();
   else               Fourth_case();
}

int main ()
{
  Completeaza();
  Rezolva();
  fin.close();
  fout.close();
  return 0;
}