Cod sursa(job #1018058)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 28 octombrie 2013 20:31:06
Problema Semne Scor 100
Compilator cpp Status done
Runda Lista lui wefgef Marime 0.67 kb
#include<fstream>
#include<cstdlib>
#define dim 50007
#include<ctime>
using namespace std;
ifstream f("semne.in"); ofstream g("semne.out");
char sol[dim];
long long  Ss,S;
int n,pp,mm,t,i,a[dim],p[dim],m[dim];
int main()
{   f>>n>>S;
    srand(time(0));
    for(i=1;i<=n;i++)
    {   f>>a[i];
        t=rand()%2;
        if(t) p[++pp]=i, Ss+=a[i], sol[i]='+'; else m[++mm]=i, Ss-=a[i], sol[i]='-';
    }
    while(Ss!=S)
        if(Ss<S) {t=rand()%mm+1; p[++pp]=m[t]; m[t]=m[mm--]; sol[p[pp]]='+'; Ss+=2*a[p[pp]];}
            else    {t=rand()%pp+1; m[++mm]=p[t]; p[t]=p[pp--]; sol[m[mm]]='-'; Ss-=2*a[m[mm]];}
    for(i=1;i<=n;i++) g<<sol[i];
    return 0;
}