Cod sursa(job #262044)

Utilizator drag0s93Mandu Dragos drag0s93 Data 18 februarie 2009 22:47:01
Problema Multimi2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<stdio.h>

#define Nmax 1000020

struct fc{
	int x,y;
};

int n;
fc v[Nmax];
void afisare()
{
	long long sum1=0,sum2=0;
	int p1=0,p2=0;
	for(int i=1;i<=n;++i)
	{
		sum1+=v[i].x;
		if(v[i].x>0)
			++p1;
		if(v[i].y>0)
			++p2;
		sum2+=v[i].y;
	}
	printf("%lld\n%d\n",sum1-sum2,p1);
	for(int i=1;i<=p1;++i)
		printf("%d ",v[i].x);
	printf("\n%d\n",p2);
	for(int i=1;i<=p2;++i)
		printf("%d ",v[i].y);
}
void solve()
{
	int p=1,t=1;
	if(n%4==0)
		for(int i=1;i<=n;++i)
			if((i%4==0 || (i-3)%4==0) && ((i-1)%3 || (i-2)%3))
				v[p++].x=i;
			else 
				v[t++].y=i;
	else 
	{
		if((n-1)%4==0)
		{
			v[p++].x=1;
			for(int i=2;i<=n;++i)
				if((i%4==0 || (i-3)%4==0) && ((i-1)%3 || (i-2)%3))
					v[p++].x=i;
				else 
					v[t++].y=i;
		}
		if((n-2)%4==0)
		{
			v[p++].x=1;
			v[t++].y=2;
			for(int i=3;i<=n;++i)
				if((i%4==0 || (i-3)%4==0) && ((i-1)%3 || (i-2)%3))
					v[p++].x=i;
				else 
					v[t++].y=i;
		}
		if((n-3)%4==0)
		{
			v[p++].x=1;
			v[p++].x=2;
			v[t++].y=3;
			for(int i=4;i<=n;++i)
				if((i%4==0 || (i-3)%4==0) && ((i-1)%3 || (i-2)%3))
					v[p++].x=i;
				else 
					v[t++].y=i;
		}
	}
	afisare();
}
int main()
{
	freopen("multimi2.in","r",stdin);
	freopen("multimi2.out","w",stdout);
	scanf("%d",&n);
	solve();
	return 0;
}