Pagini recente » Cod sursa (job #2673921) | Cod sursa (job #2868678) | Cod sursa (job #1501169) | Cod sursa (job #637587) | Cod sursa (job #478630)
Cod sursa(job #478630)
#include<fstream>
#include<cstdlib>
using namespace std;
const char iname[]="semne.in";
const char oname[]="semne.out";
const int maxn=50005;
ifstream f(iname);
ofstream g(oname);
int a[maxn],l[maxn],r[maxn],i,x,rez[maxn],k,n,m;
long long S,s;
int main()
{
f>>k>>S;
for(i=1;i<=k;++i)
{
f>>a[i];
x=rand()%2;
if(x)
s+=a[i],l[++n]=i;
else
s-=a[i],r[++m]=i;
}
do
{
if(s==S)
break;
if(s>S)
{
x=rand()%n+1;
s-=2*a[l[x]];
r[++m]=l[x];
l[x]=l[n--];
}
else
{
x=rand()%m+1;
s+=2*a[r[x]];
l[++n]=r[x];
r[x]=r[m--];
}
}while(1);
for(i=1;i<=n;++i)
rez[l[i]]=1;
for(i=1;i<=k;++i)
if(rez[i])
g<<"+";
else
g<<"-";
g<<"\n";
}