Cod sursa(job #878013)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 13 februarie 2013 18:52:42
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.69 kb
#include <fstream>

using namespace std;

int main()
{
	//Deschiderea fisierelor de intrare si iesire
	ifstream fin("multimi2.in");
	ofstream fout("multimi2.out");
	
	//Cele doua variabile necesare, n este numarul de numere iar i este contor
	int n,i;
	
	//Se citeste n
	fin>>n;
	
	//Se rezolva cerinta in functie de restul impartirii lui n la 4, solutii de 0
	//fiind pentru 0 si 3 iar de 1 pentru 1 si 2
	if(n%4==0)
	{
		fout<<"0\n";
		
		//Ideea din spatele fiecarei ramuri a if-ului este ca pentru 4 numere consecutive putem obtine 0 (n+1-n-2-n-3+n+4)
		fout<<n/2<<'\n'; //n/4*2
		for(i=1;i+3<=n;i+=4)
			fout<<i<<' '<<i+3<<' ';
		fout<<'\n';
		
		fout<<n/2<<'\n'; //n/4*2
		for(i=2;i+1<=n;i+=4)
			fout<<i<<' '<<i+1<<' ';
		fout<<'\n';
	}
	else if(n%4==1)
	{
		fout<<"1\n";
		
		fout<<n/2+1<<'\n';
		fout<<"1 ";
		for(i=2;i+3<=n;i+=4)
			fout<<i<<' '<<i+3<<' ';
		fout<<'\n';
		
		fout<<n/2<<'\n';
		for(i=3;i+1<=n;i+=4)
			fout<<i<<' '<<i+1<<' ';
		fout<<'\n';
	}
	else if(n%4==2)
	{
		fout<<"1\n";
		
		fout<<((n/4)*2)+1<<'\n';
		fout<<"1 ";
		for(i=3;i+3<=n;i+=4)
			fout<<i<<' '<<i+3<<' ';
		fout<<'\n';
		
		fout<<(n/4*2)+1<<'\n';
		fout<<"2 ";
		for(i=4;i+1<=n;i+=4)
			fout<<i<<' '<<i+1<<' ';
		fout<<'\n';
	}
	else if(n%4==3)
	{
		fout<<"0\n";
		
		fout<<(n/4*2)+2<<'\n';
		//Pentru n%4==0 folosim 1 si 2 in primul vector si 3 in cel de-al doilea
		fout<<"1 2 ";
		for(i=4;i+3<=n;i+=4)
			fout<<i<<' '<<i+3<<' ';
		fout<<'\n';
		
		fout<<((n/4)*2)+1<<'\n';
		fout<<"3 ";
		for(i=5;i+1<=n;i+=4)
			fout<<i<<' '<<i+1<<' ';
		fout<<'\n';
	}
	
	//Inchiderea fisierelor de intrare si iesire
	fin.close();
	fout.close();
	return 0;
}