Pagini recente » Cod sursa (job #59829) | Cod sursa (job #2260954) | Borderou de evaluare (job #1569390) | Cod sursa (job #2758277) | Cod sursa (job #233734)
Cod sursa(job #233734)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<fstream.h>
#define g 50001
long long p[g],m[g],v[g],jel[g];
int main()
{
ifstream be ("semne.in");
ofstream ki ("semne.out");
long n,seg,i;
long long sum,x,y,val;
be>>n>>sum;
for (i=1;i<=n;i++)
be>>v[i];
be.close();
seg=x=y=0;
for (i=1;i<=n;i++)
{
if (seg<sum)
{
p[++x]=v[i];
jel[i]=1;
seg+=v[i];
}
else
{
m[++y]=v[i];
jel[i]=2;
seg-=v[i];
}
}
randomize();
while (seg!=sum)
{
if (seg<sum)
{
val=(rand()%y)+1;
jel[m[val]]=1;
p[++x]=m[val];
m[val]=m[y--];
seg+=v[p[x]]<<1;
}
else
{
val=(rand()%x)+1;
jel[p[val]]=2;
m[++y]=p[val];
p[val]=p[x--];
seg-=v[m[y]]<<1;
}
}
for (i=1;i<=n;i++)
{
if (jel[i]==1)
ki<<"+";
else
ki<<"-";
}
ki<<'\n';
ki.close();
return 0;
}