Cod sursa(job #986261)

Utilizator enedumitruene dumitru enedumitru Data 18 august 2013 13:28:57
Problema Semne Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 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;
}