Cod sursa(job #410764)

Utilizator cnt_tstcont teste cnt_tst Data 4 martie 2010 16:18:20
Problema Multimi2 Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include<stdio.h>
int n,i,v[1000000],m;
int main(){

	FILE*f=fopen("multimi2.in","r");
	FILE*g=fopen("multimi2.out","w");
	
	fscanf(f,"%d",&n);
	
	if(n%4==0){
	fprintf(g,"0\n%d\n",n/2);
	for(i=1;i<=n/4;i++)
		fprintf(g,"%d ",i);
	for(i=3*n/4+1;i<=n;i++)
		fprintf(g,"%d ",i);
	fprintf(g,"\n%d\n",n/2);
	for(i=n/4+1;i<=3*n/4;i++)
		fprintf(g,"%d ",i);
	}
	if(n%4==1){
		m=(n+1)/2;
		for(i=2;i<=m;i++)
			if(i%2==0)
				v[i]=1;
			else
				v[i]=2;
		for(i=m+1;i<=n;i++)
			if(i%2==0)
				v[i]=2;
			else
				v[i]=1;
	v[1]=2;
	fprintf(g,"1\n");
	fprintf(g,"%d\n",m);
	for(i=1;i<=n;i++)
		if(v[i]==1)
			fprintf(g,"%d ",i);
			
	fprintf(g,"\n%d\n",m+1);
	for(i=1;i<=n;i++)
		if(v[i]==2)
			fprintf(g,"%d ",i);
			
	}
	if(n%4==2){
		m=(n+1)/2;
		for(i=1;i<=m;i++)
			if(i%2==0)
				v[i]=1;
			else
				v[i]=2;
		for(i=m+1;i<=n;i++)
			if(i%2==0)
				v[i]=2;
			else
				v[i]=1;
			v[m]=1;
	fprintf(g,"1\n");
	fprintf(g,"%d\n",m);
	for(i=1;i<=n;i++)
		if(v[i]==1)
			fprintf(g,"%d ",i);
		fprintf(g,"\n%d\n",m);
	for(i=1;i<=n;i++)
		if(v[i]==2)
			fprintf(g,"%d ",i);
	}
	if(n%4==3){
		m=n/2;
		for(i=1;i<=m;i++)
			if(i%2==0)
				v[i]=2;
			else
				v[i]=1;
		for(i=m+1;i<=n;i++)
			if(i%2==0)
				v[i]=1;
			else
				v[i]=2;
			v[n]=2;
	fprintf(g,"0\n");
	fprintf(g,"%d\n",m+1);
	for(i=1;i<=n;i++)
		if(v[i]==1)
			fprintf(g,"%d ",i);
		fprintf(g,"\n%d\n",m);
	for(i=1;i<=n;i++)
		if(v[i]==2)
			fprintf(g,"%d ",i);
	}

	




fclose(f);
fclose(g);

return 0;	
}