Pagini recente » Cod sursa (job #644024) | Cod sursa (job #3168010) | Cod sursa (job #1576595) | Cod sursa (job #161217) | Cod sursa (job #680226)
Cod sursa(job #680226)
#include <fstream>
#include <ctime>
#include <algorithm>
#include <vector>
#define pb push_back
#define ppb pop_back
#define NMAX 50010
#define p '+'
#define m '-'
using namespace std;
ifstream f("semne.in");
ofstream g("semne.out");
vector <int> M,P;
int N,i,A[NMAX],S,SP;
char ANS[NMAX];
int main() {
srand(time(NULL));
f >> N >> S;
for (i=1;i<=N;i++) {
f >> A[i];
if (rand()%2) {
ANS[i]=p;
SP+=A[i];
P.pb(i);
}
else {
ANS[i]=m;
SP-=A[i];
M.pb(i);
}
}
while (SP!=S)
if (S>SP) {
int X=rand()%M.size();
ANS[M[X]]=p;
P.pb(M[X]);
SP+=2*A[M[X]];
M[X]=M[M.size()-1];
M.ppb();
}
else {
int X=rand()%P.size();
ANS[P[X]]=m;
M.pb(P[X]);
SP-=2*A[P[X]];
P[X]=P[P.size()-1];
P.ppb();
}
for (i=1;i<=N;i++) g << ANS[i];
g << '\n';
f.close();g.close();
return 0;
}