Pagini recente » Cod sursa (job #3181812) | Cod sursa (job #1883737) | Cod sursa (job #2879767) | Cod sursa (job #2689367) | Cod sursa (job #2060276)
#include <bits/stdc++.h>
#define MaxN 50005
#define MOD 666013
#define INF 2140000000
using namespace std;
FILE *IN,*OUT;
long long S=0,Q;
int v[MaxN],N,p[MaxN];
bool sign[MaxN];
int main()
{
IN=fopen("semne.in","r");
OUT=fopen("semne.out","w");
srand(time(NULL));
fscanf(IN,"%d%lld",&N,&Q);
for(int i=1;i<=N;i++)
fscanf(IN,"%d",&v[i]),p[i]=i;
random_shuffle(p+1,p+1+N);
for(int i=1;i<=N;i++)
{
if(S>Q)
S-=v[p[i]];
else S+=v[p[i]],sign[p[i]]=1;
}
int pos=1;
random_shuffle(p+1,p+1+N);
while(S!=Q)
{
while(sign[p[pos]]&&S<Q)
{
pos++;
if(pos>N)
pos=1,random_shuffle(p+1,p+1+N);
}
while(!sign[p[pos]]&&S>Q)
{
pos++;
if(pos>N)
pos=1,random_shuffle(p+1,p+1+N);
}
if(sign[pos])
S-=v[pos]<<1;
else S+=v[pos]<<1;
sign[pos++]^=1;
}
for(int i=1;i<=N;i++)
{
if(sign[i])fprintf(OUT,"+");
else fprintf(OUT,"-");
}
return 0;
}