Pagini recente » Cod sursa (job #2016103) | Clasament dupa rating | Cod sursa (job #2279764) | Cod sursa (job #1600640) | Cod sursa (job #1735532)
///Promit ca o sa bag si un algoritm genetic pe acest jeg
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 50005;
int n, s, t;
vector<int> add, drop;
char ant[NMAX]; ///Antwort
int v[NMAX];
int main(void) {
freopen("semne.in", "r", stdin);
freopen("semne.out", "w", stdout);
int pos;
scanf("%d%d",&n,&t);
for(int i=0; i<n; ++i) {
scanf("%d",&v[i]);
if(v[i]+s<=t) {
add.push_back(i);
s += v[i];
}
else {
drop.push_back(i);
s -= v[i];
}
}
while(s!=t) {
if(s > t) {
pos = rand() % add.size();
s -= 2 * v[add[pos]];
drop.push_back(add[pos]);
add[pos] = add.back();
add.pop_back();
}
else {
pos = rand() % drop.size();
s += 2 * v[drop[pos]];
add.push_back(drop[pos]);
drop[pos] = drop.back();
drop.pop_back();
}
}
for(auto i:add)
ant[i] = '+';
for(auto i:drop)
ant[i] = '-';
printf("%s\n",ant);
fclose(stdin);
fclose(stdout);
return 0;
}