Pagini recente » Cod sursa (job #2851666) | Cod sursa (job #117952) | Cod sursa (job #486511) | Cod sursa (job #2632488) | Cod sursa (job #680545)
Cod sursa(job #680545)
#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(0));
f >> N >> S;
for (i=1;i<=N;i++) {
f >> A[i];
int k=rand()%2;
if (k) {
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;
}