Pagini recente » Cod sursa (job #341151) | Cod sursa (job #884804) | Cod sursa (job #821867) | Cod sursa (job #1592274) | Cod sursa (job #2798481)
#include <fstream>
#include <ctime>
#include <algorithm>
using namespace std;
const int N = 5e4 + 5;
int v[N], a[N], b[N];
char ans[N];
int main() {
ios_base::sync_with_stdio(false);
ifstream cin("semne.in");
ofstream cout("semne.out");
cin.tie(nullptr), cout.tie(nullptr);
srand(time(nullptr));
int n;
long long s, sa, sb, sza, szb;
cin >> n >> s;
sa = sb = sza = szb = 0;
for (int i = 0; i < n; ++i) {
cin >> v[i];
sa += v[i];
a[sza++] = i;
}
random_shuffle(a, a + sza);
while (sa - sb != s) {
if (sa - sb > s) {
int poz = rand() % sza;
sa -= v[a[poz]], sb += v[a[poz]];
b[szb++] = a[poz];
a[poz] = a[--sza];
} else {
int poz = rand() % szb;
sb -= v[b[poz]], sa += v[b[poz]];
a[sza++] = b[poz];
b[poz] = b[--szb];
}
}
for (int i = 0; i < sza; ++i)
ans[a[i]] = '+';
for (int i = 0; i < szb; ++i)
ans[b[i]] = '-';
cout << ans << "\n";
cout.close();
return 0;
}