Cod sursa(job #788254)

Utilizator misinozzz zzz misino Data 14 septembrie 2012 13:34:33
Problema Semne Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<algorithm>
#include<fstream>
#include<cstdlib>
using namespace std;
ifstream f("semne.in");
ofstream g("semne.out");
int x,n,i,m1,p1,p[50001],m[50001],v[50001];
long long s,s1;
char a[50001];
int main()
{f>>n>>s;
for(i=1;i<=n;++i)
	f>>v[i];
for(i=1;i<=n;++i)
{x=rand()%2;
if(x)
{p1++;
p[p1]=i;
s1+=v[i];
a[i]='+';
}
else
{m1++;
m[m1]=i;
s1-=v[i];
a[i]='-';
}
}
while(s1!=s)
{if(s1>s)
{x=rand()%p1+1;
s1-=(2*v[p[x]]);
--p1;
++m1;
m[m1]=p[x];
a[p[x]]='-';
swap(p[p1+1],p[x]);

p[p1+1]=0;

}
else
{x=rand()%m1+1;
s1+=(2*v[m[x]]);
--m1;
++p1;
p[p1]=m[x];
a[m[x]]='+';
swap(m[m1+1],m[x]);
m[m1+1]=0;

}
}
for(i=1;i<=n;++i)
	g<<a[i];g<<'\n';
return 0;
}