Cod sursa(job #262245)

Utilizator drag0s93Mandu Dragos drag0s93 Data 19 februarie 2009 10:33:20
Problema Multimi2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include<stdio.h>   
  
#define Nmax 1020
  
struct fc{   
    int x,y;   
};   
  
int n;   
fc v[Nmax];   
void afisare()   
{   
    long long sum1=0,sum2=0;   
	int i,p1=0,p2=0;
	for(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;
	}
	if (sum1-sum2<0)
		printf("%lld\n",(-1)*(sum1-sum2));
	else printf("%lld\n",sum1-sum2);
	printf("%d\n",p1);
	for(i=1;i<=p1;++i)
		printf("%d ",v[i].x);
	printf("\n%d\n",p2);
	for(i=1;i<=p2;++i)
        printf("%d ",v[i].y);   
}   
void solve()   
{   
    int p=1,t=1,e=1,r=1;   
    if(n%4==0)   
    {   
        for(int i=1;i<=n;++i)   
        {   
			if(i%4==0 || i%4==3)
                v[e++].x=i;   
            else    
                v[r++].y=i;   
		}
	}
	else
	{
		if(n%4==1)
		{
			v[p++].x=1;
			for(int i=2;i<=n;++i)
				if((i%4)==0 || i%4==3)
                    v[p++].x=i;   
                else    
                    v[t++].y=i;   
        }   
        if(n%4==2)   
        {   
            v[p++].x=1;   
            v[t++].y=2;   
            for(int i=3;i<=n;++i)   
				if((i%4)==0 || (i%4)==3)
					v[p++].x=i;
				else
					v[t++].y=i;
		}
		if(n%4==3)
		{
			v[p++].x=1;
			v[p++].x=2;
			v[t++].y=3;
			for(int i=4;i<=n;++i)
				if(i%4==0 || i%4==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;   
}