Cod sursa(job #209132)

Utilizator pitbullpitbulll pitbull Data 20 septembrie 2008 21:32:16
Problema Multimi2 Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.11 kb
# include <stdio.h>
# define NMAX 1000001

int N;
int v[NMAX];
int nr1,nr2,s,i;

void write_sol(){
	FILE* f=fopen("multimi2.out","wt");
	fprintf(f,"%d\n",s);
	fprintf(f,"%d\n",nr1);
	for (i=1;i<=N;i++)
		if(v[i]==1)
			fprintf(f,"%d ",i);
	fprintf(f,"\n");	
	fprintf(f,"%d\n",nr2);
	for (i=1;i<=N;i++)
		if(v[i]==2)
			fprintf(f,"%d ",i);
	fclose(f);
}

int main (){
	FILE* f=fopen("multimi2.in","rt");
	fscanf(f,"%d",&N);
	fclose(f);
	
	int cat=N/4;
	
	
	if(N%4==0){
		s=0;
		nr1=nr2=N/2;
		for (i=1;i<=cat*4;i+=4){
			v[i]=1;
			v[i+1]=2;
			v[i+2]=2;
			v[i+3]=1;
		}	
	}
	else if(N%4==2){
		v[1]=1;
		v[2]=2;
		s=1;
		nr1=nr2=N/2;
		for (i=3;i<=cat*4+2;i+=4){
			v[i]=1;
			v[i+1]=2;
			v[i+2]=2;
			v[i+3]=1;
		}
	}
	else if(N%4==1){
		s=1;
		nr1=N/2+1;
		nr2=N/2;
		for (i=2;i<=cat*4+1;i+=4){
			v[i]=1;
			v[i+1]=2;
			v[i+2]=2;
			v[i+3]=1;
		}
		v[1]=1;
	}
	else {
		v[1]=1;
		v[2]=1;
		v[3]=2;
		for (i=4;i<=cat*4+3;i+=4){
			v[i]=1;
			v[i+1]=2;
			v[i+2]=2;
			v[i+3]=1;
		}
		s=0;
		nr1=cat*2+2;
		nr2=cat*2+1;
	}
	
	write_sol();
	return 0;
}