Pagini recente » Cod sursa (job #1329684) | Cod sursa (job #2137571) | Cod sursa (job #2156765) | Cod sursa (job #654271) | Cod sursa (job #488662)
Cod sursa(job #488662)
#include <cstdio>
#include <ctime>
#include <cstdlib>
#include <bitset>
using namespace std;
#define DN 50002
int poz[DN],npoz,neg[DN],nneg,n,S,smea,sir[DN];
bitset <DN> rez;
int main()
{
srand(time(NULL));
int i;
freopen("semne.in","r",stdin);
freopen("semne.out","w",stdout);
for(scanf("%d %d",&n,&S),i=1;i<=n; i++) scanf("%d",&sir[i]);
for(i=1; i<=n;i++) {
if(smea>S) {
smea-=sir[i];
neg[++nneg]=i;
}
else {
smea+=sir[i];
rez[i]=1;
poz[++npoz]=i;
}
}
while(smea!=S ) {
if(smea>S) {
i=rand()%npoz+1;
smea-=2*sir[poz[i]];
rez[poz[i]]=0;
neg[++nneg]=poz[i];
poz[i]=poz[npoz--];
}
else {
i=rand()%nneg+1;
smea+=2*sir[neg[i]];
rez[neg[i]]=1;
poz[++npoz]=neg[i];
neg[i]=neg[nneg--];
}
}
for(i=1; i<=n; i++)
if(rez[i]) printf("+");
else printf("-");
return 0;
}