Pagini recente » Cod sursa (job #2889181) | Cod sursa (job #1583980) | Cod sursa (job #2671873) | Cod sursa (job #1657790) | Cod sursa (job #362437)
Cod sursa(job #362437)
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
long long N,S,nr,N1,N2;
long long v[50010],st[50010],dr[50010];
char a[50010];
long long Q,O;
int main()
{
freopen("semne.in","r",stdin);
freopen("semne.out","w",stdout);
scanf("%lld%lld",&N,&S);
srand(time (0));
for(int i=0;i<N;++i)
{
scanf("%lld",&v[i]);
if(S>=Q)
{
a[i]=1;
st[N1]=i;
++N1;
Q=Q+v[i];
}
else if(S<Q)
{
a[i]=2;
dr[N2]=i;
++N2;
Q=Q-v[i];
}
}
while(Q!=S)
{
if(Q>S)
{
nr=rand()%N1;
a[st[nr]]=2;
Q=Q-v[st[nr]]-v[st[nr]];
dr[N2]=st[nr];
++N2;
st[nr]=st[N1-1];
--N1;
}
else if(Q<S)
{
nr=rand()%N2;
a[dr[nr]]=1;
Q=Q+v[dr[nr]]+v[dr[nr]];
st[N1]=dr[nr];
++N1;
dr[nr]=dr[N2-1];
--N2;
}
}
for(int i=0;i<N;++i)
if(a[i]==1)
printf("+");
else printf("-");
return 0;
}