Pagini recente » Cod sursa (job #727080) | Cod sursa (job #114754) | Cod sursa (job #472500) | Cod sursa (job #736139) | Cod sursa (job #1481623)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 50000
int v[MAXN], p[MAXN], m[MAXN];
char ch[MAXN];
int main(){
int n, i, a, b, poz;
long long x, s;
FILE *fin, *fout;
fin=fopen("semne.in", "r");
fout=fopen("semne.out", "w");
fscanf(fin, "%d%lld", &n, &s);
x=0;
a=0;
b=0;
for(i=0; i<n; i++){
fscanf(fin, "%d", &v[i]);
if(x<s){
p[a++]=i;
x+=v[i];
}else{
m[b++]=i;
x-=v[i];
}
}
while(x!=s){
if(x<s){
if(b==0){
return 1;
}
poz=rand()%b;
x+=2*v[m[poz]];
p[a++]=m[poz];
m[poz]=m[b-1];
b--;
}else{
if(a==0){
return 2;
}
poz=rand()%a;
x-=2*v[p[poz]];
m[b++]=p[poz];
p[poz]=p[a-1];
a--;
}
}
for(i=0; i<a; i++){
ch[p[i]]='+';
}
for(i=0; i<b; i++){
ch[m[i]]='-';
}
for(i=0; i<n; i++){
fputc(ch[i], fout);
}
fputc('\n', fout);
fclose(fin);
fclose(fout);
return 0;
}