Pagini recente » Cod sursa (job #1843605) | Cod sursa (job #266826) | Cod sursa (job #2916205) | Cod sursa (job #2378287) | Cod sursa (job #2322510)
#include <cstdio>
#include <cstdlib>
#include <ctime>
using namespace std;
const int MAX_N = 50000;
int p[MAX_N + 5];
int m[MAX_N + 5];
int v[MAX_N + 5];
char s[MAX_N + 5];
int main() {
srand(time(NULL));
freopen("semne.in", "r", stdin);
freopen("semne.out", "w", stdout);
int N;
scanf("%d", &N);
long long S;
scanf("%lld", &S);
long long sum = 0;
int n1 = 0, n2 = 0;
for (int i = 1; i <= N; ++i) {
scanf("%d", &v[i]);
s[i] = '+';
p[++n1] = i;
sum += v[i];
}
while (sum != S) {
if (sum >= S) {
int poz = rand() % n1 + 1;
m[++n2] = p[poz];
p[poz] = p[n1--];
sum -= 2 * v[m[n2]];
s[m[n2]] = '-';
} else {
int poz = rand() % n2 + 1;
p[++n1] = m[poz];
m[poz] = m[n2--];
sum += 2 * v[p[n1]];
s[p[n1]] = '+';
}
}
printf("%s", s + 1);
return 0;
}