Pagini recente » Cod sursa (job #1786871) | Cod sursa (job #1579940) | Diferente pentru utilizator/stay_awake77 intre reviziile 40 si 39 | Cod sursa (job #879940) | Cod sursa (job #2632425)
#include <bits/stdc++.h>
using namespace std;
const int DIM = 5e4 + 5;
int n;
long long ans;
int a[DIM];
int main()
{
freopen("semne.in", "r", stdin);
freopen("semne.out", "w", stdout);
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
scanf("%d%lld", &n, &ans);
long long sum = 0;
vector <int> p(n);
vector <int> m;
for (int i = 1; i <= n ; ++i) {
scanf("%d", &a[i]);
p[i - 1] = i;
sum += a[i];
}
while (ans != sum) {
if (ans < sum) {
int pos = rng() % (int)p.size();
sum = sum - 2 * a[p[pos]];
m.push_back(p[pos]);
swap(p[pos], p[(int)p.size() - 1]);
p.pop_back();
}
else {
int pos = rng() % (int)m.size();
sum = sum + 2 * a[m[pos]];
p.push_back(m[pos]);
swap(m[pos], m[(int)m.size() - 1]);
m.pop_back();
}
}
string s;
for (int i = 1; i <= n ; ++i) s.push_back('+');
for (auto it : m) s[it - 1] = '-';
cout << s;
return 0;
}