Pagini recente » Cod sursa (job #2220462) | Cod sursa (job #2670964) | Cod sursa (job #2147379) | Cod sursa (job #2844784) | Cod sursa (job #362429)
Cod sursa(job #362429)
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int N,S,nr,N1,N2;
int 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("%d%d",&N,&S);
srand(time (0));
for(int i=0;i<N;++i)
{
scanf("%d",&v[i]);
if(S>=Q)
{
a[i]=1;
st[N1++]=i;
Q=Q+v[i];
}
else if(S<Q)
{
dr[N2++]=i;
a[i]=2;
Q=Q-v[i];
}
}
while(Q!=S)
{
if(Q>S)
{
nr=rand()%N1;
a[st[nr]]=2;
Q=Q-(v[st[nr]]*2);
dr[N2++]=st[nr];
st[nr]=st[N1-1];
--N1;
}
else if(Q<S)
{
nr=rand()%N2;
a[dr[nr]]=1;
Q=Q+(v[dr[nr]]*2);
st[N1++]=dr[nr];
dr[nr]=dr[N2-1];
--N2;
}
}
for(int i=0;i<N;++i)
if(a[i]==1)
printf("+");
else printf("-");
return 0;
}