Pagini recente » Cod sursa (job #851839) | Cod sursa (job #975083) | Cod sursa (job #2260845) | Cod sursa (job #2253746) | Cod sursa (job #785928)
Cod sursa(job #785928)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
#define BM 50005
long long sf,s[BM];
int n,plus[BM],minus[BM],dimp,dimm;
char out[BM];
int main () {
int i,el;
long long sc=0;
srand(time(NULL));
freopen("semne.in","r",stdin);
freopen("semne.out","w",stdout);
scanf("%d %lld",&n,&sf);
for(i=1;i<=n;++i)scanf("%d",&s[i]);
for(i=1;i<=n;++i){
if(sc>sf){
sc-=s[i];
out[i]='-';
minus[++dimm]=i;
}
else {
sc+=s[i];
out[i]='+';
plus[++dimp]=i;
}
}
for(;sc!=sf;){
if(sc<sf){
el=rand()%dimm+1;
sc+=(2*s[minus[el]]);
out[minus[el]]='+';
plus[++dimp]=minus[el];
swap(minus[el],minus[dimm]);
--dimm;
}
else {
el=rand()%dimp+1;
sc-=(2*s[plus[el]]);
out[plus[el]]='-';
minus[++dimm]=plus[el];
swap(plus[el],plus[dimp]);
--dimp;
}
}
for(i=1;i<=n;++i)printf("%c",out[i]);
return 0;
}