Pagini recente » Cod sursa (job #2419920) | Cod sursa (job #1774479) | Cod sursa (job #100890) | Cod sursa (job #1714664) | Cod sursa (job #397968)
Cod sursa(job #397968)
#include <cstdio>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;
const int NMax = 50010;
long long S, sc;
int Nr, v[NMax], N[NMax], P[NMax];
bool B[NMax];
int main () {
freopen ("semne.in", "r", stdin);
freopen ("semne.out", "w", stdout);
scanf ("%d%lld", &Nr, &S);
for (int i=1; i<=Nr; ++i) {
scanf ("%d", &v[i]);
if (sc<S) {
P[++P[0]] = v[i];
sc += v[i];
B[i] = true;
}
else {
N[++N[0]] = v[i];
sc -= v[i];
}
}
srand(time(NULL));
while (sc!=S) {
if (sc<S) {
int r = rand()%N[0]+1;
B[N[r]] = true;
sc += 2*v[N[r]];
P[++P[0]] = N[r];
N[r] = N[N[0]];
--N[0];
}
else {
int r = rand()%P[0]+1;
B[P[r]] = false;
sc -= 2*v[P[r]];
N[++N[0]] = P[r];
P[r] = P[P[0]];
--P[0];
}
}
for (int i=1;i<=Nr;++i) {
if (B[i]) {
printf ("+");
}
else {
printf ("-");
}
}
return 0;
}