Pagini recente » Cod sursa (job #1998507) | Cod sursa (job #897002) | Cod sursa (job #2671076) | Cod sursa (job #767071) | Cod sursa (job #2108030)
#include <bits/stdc++.h>
#define MAXN 50000
long long v[1 + MAXN];
int f[1 + MAXN];
int main(){
FILE*fi,*fo;
fi = fopen("semne.in","r");
fo = fopen("semne.out","w");
int N;
long long s;
fscanf(fi,"%d%lld", &N, &s);
for(int i = 1; i <= N; i++)
fscanf(fi,"%lld", &v[i]);
long long sum = 0;
for(int i = 1; i <= N; i++){
f[i] = 1;
sum += v[i];
}
int p = N, n = 0;
srand(time(NULL));
while(sum != s){
int i, j = 1, con = 0;
if(sum > s){
i = 1 + rand() % p;
p--;
n++;
while(con < i){
if(f[j] == 1)
con++;
j++;
}
}
else{
i = 1 + rand() % n;
p++;
n--;
while(con < i){
if(f[j] == -1)
con++;
j++;
}
}
j--;
//i = 1 + rand() % N;
sum -= f[j] * v[j];
f[j] = -f[j];
sum += f[j] * v[j];
}
for(int i = 1; i <= N; i++)
if(f[i] == 1) fprintf(fo,"+");
else fprintf(fo,"-");
return 0;
}