Cod sursa(job #979819)

Utilizator thewildnathNathan Wildenberg thewildnath Data 2 august 2013 20:56:27
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.45 kb
#include<stdio.h>
#include<stdlib.h>

int v1[500005],v2[500005];

int main()
{
    freopen("multimi2.in","r",stdin);
    freopen("multimi2.out","w",stdout);
    int n,i,s1=0,s2=0;
    scanf("%d",&n);
    if(n==2)
    {
        printf("1\n1\n1\n1\n2\n");
        return 0;
    }
    if(n%2==0)
    {
        int m=n/2;
        for(i=2;i<=m;i+=2)
        {
            s1+=n+1;
            v1[++v1[0]]=i;
            v1[++v1[0]]=n-i+1;
        }
        for(i=1;i<=m;i+=2)
        {
            s2+=n+1;
            v2[++v2[0]]=i;
            v2[++v2[0]]=n-i+1;
        }
        if(s1<s2)
        {
            v1[++v1[0]]=v2[v2[0]];
            s1+=v2[v2[0]];
            s2-=v2[v2[0]];
            --v2[0];
        }
    }
    else
    {
        s1=s2=3;
        v1[0]=2;v2[0]=1;
        v1[1]=1;v1[2]=2;v2[1]=3;
        for(i=4;i<n;i+=2)
        {
            if(s1<=s2)
            {
                v1[++v1[0]]=i+1;
                v2[++v2[0]]=i;
                s1+=i+1;
                s2+=i;
            }
            else
            {
                s1+=i;
                s2+=i+1;
                v1[++v1[0]]=i;
                v2[++v2[0]]=i+1;
            }
        }
    }
    printf("%d\n",abs(s1-s2));
    printf("%d\n",v1[0]);
    for(i=1;i<=v1[0];++i)
        printf("%d ",v1[i]);
    printf("\n%d\n",v2[0]);
    for(i=1;i<=v2[0];++i)
        printf("%d ",v2[i]);
    printf("\n");
    return 0;
}