Pagini recente » Cod sursa (job #2556849) | Clasament info_bv_11-12_1 | Cod sursa (job #1688180) | Cod sursa (job #322266) | Cod sursa (job #483228)
Cod sursa(job #483228)
#include<cstdlib>
#include<fstream.h>
#define NMAX 50005
long s,k,a[NMAX],su,c,w[NMAX],r[NMAX],n,m;
char sol[NMAX];
void cit()
{ifstream fin("semne.in");
fin>>k>>s;
for(long i=1;i<=k;++i)
fin>>a[i];
fin.close();
}
int main()
{cit();
long i;
ofstream fout("semne.out");
su=0;
long x;
for(i=1;i<=k;++i)
{x=rand()%2;
if(x)
su+=a[i],w[++n]=i;
else
su-=a[i],r[++m]=i;
}
do
{if(su==s)
break;
if(su>s)
{x=rand()%n+1;
su-=2*a[w[x]];
r[++m]=w[x];
w[x]=w[n--];
}
if(su<s)
{x=rand()%m+1;
su+=2*a[r[x]];
w[++n]=r[x];
r[x]=r[m--];
}
}while(1);
for(i=1;i<=n;++i)
sol[w[i]]=1;
for(i=1;i<=m;++i)
sol[r[i]]=0;
for(i=1;i<=k;++i)
if(sol[i])
fout<<'+';
else
fout<<'-';
fout.close();
return 0;
}