Pagini recente » Cod sursa (job #2492303) | Cod sursa (job #301570) | Cod sursa (job #811476) | Cod sursa (job #1816362) | Cod sursa (job #395388)
Cod sursa(job #395388)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#define NMAX 50010
int N, V[NMAX], poz[NMAX], neg[NMAX], A[NMAX];
long long S, s;
int main()
{
freopen("semne.in","r",stdin);
freopen("semne.out","w",stdout);
scanf("%d %lld",&N,&S);
int i;
for (i=1; i<=N; i++)
{
scanf("%d",&A[i]);
if (s<S)
{
s+=A[i];
poz[++poz[0]]=i;
V[i]=1;
} else
{
s-=A[i];
neg[++neg[0]]=i;
}
}
srand (time (NULL));
while (s!=S)
{
if (s<S)
{
int p =rand() % neg[0] +1;
V[neg[p]]=1;
s+=2*A[neg[p]];
poz[++poz[0]]=neg[p];
neg[p]=neg[neg[0]];
neg[0]--;
} else
{
int p=rand() % poz[0] +1 ;
V[poz[p]]=0;
s-=2*A[poz[p]];
neg[++neg[0]]=poz[p];
poz[p]=poz[poz[0]];
poz[0]--;
}
}
for (i=1; i<=N; i++)
if (V[i]) printf("+"); else printf("-");
}