Pagini recente » Cod sursa (job #2424461) | Cod sursa (job #1559683) | Cod sursa (job #1426034) | Cod sursa (job #3209384) | Cod sursa (job #2060274)
#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;
}
while(S!=Q)
{
int pos=rand()%N+1;
while(sign[pos]&&S<Q)
pos=rand()%N+1;
while(!sign[pos]&&S>Q)
pos=rand()%N+1;
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;
}