Pagini recente » Cod sursa (job #2530579) | Cod sursa (job #1667510) | Cod sursa (job #1876955) | Cod sursa (job #3268797) | Cod sursa (job #609108)
Cod sursa(job #609108)
#include <iostream>
#include <cstdlib>
#include <vector>
#define NMax 50005
using namespace std;
vector <int> Plus, Minus;
int V[NMax], N, S, Sum;
char Sign[NMax];
int main()
{
freopen ("semne.in", "r", stdin);
freopen ("semne.out", "w", stdout);
srand (time (0));
scanf ("%d %d", &N, &S);
for (int i=1; i<=N; ++i)
{
scanf ("%d", &V[i]);
if (Sum<S)
{
Sign[i]='+';
Sum+=V[i];
Plus.push_back (i);
}
else
{
Sign[i]='-';
Sum-=V[i];
Minus.push_back (i);
}
}
while (Sum!=S)
{
if (Sum>S)
{
int P=rand ()%Plus.size ();
Sum-=(2*V[Plus[P]]);
Minus.push_back (Plus[P]);
Sign[Plus[P]]='-';
Plus.erase (Plus.begin ()+P);
}
else
{
int P=rand ()%Minus.size ();
Sum+=(2*V[Minus[P]]);
Plus.push_back (Minus[P]);
Sign[Minus[P]]='+';
Minus.erase (Minus.begin ()+P);
}
}
for (int i=1; i<=N; ++i)
{
printf ("%c", Sign[i]);
}
printf ("\n");
return 0;
}