Cod sursa(job #1147586)

Utilizator lianaliana tucar liana Data 19 martie 2014 23:00:01
Problema Semne Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<ctime>
#include<cstdlib>
#define nmax 50005
long long n, s, i, x, p, pozx, sum[3], ne[3];
long long smn[nmax], mult[3][nmax], v[nmax];

int main()
{
    freopen("semne.in","r",stdin);
    freopen("semne.out","w",stdout);
    srand(time(0));
    scanf("%lld %lld",&n,&s);
    for (i=1;i<=n;i++)
    {
        scanf("%lld",&x);
        p=((sum[0]-sum[1])>s);
        sum[p]+=x;
        smn[i]=p;
        mult[p][++ne[p]]=i; v[i]=i;
    }
    while (sum[0]-sum[1]!=s)
    {
        p=1-((sum[0]-sum[1])>s);
        pozx=mult[p][rand()%ne[p]+1];  x=v[pozx];
        sum[p]-=x;
        sum[1-p]+=x;
        smn[pozx]=1-smn[pozx];
    }
    for (i=1;i<=n;i++)
        if (smn[i]==0)
            printf("+");
        else
            printf("-");
    return 0;
}