Pagini recente » Cod sursa (job #726213) | Cod sursa (job #1160781) | Cod sursa (job #998698) | Cod sursa (job #2037321) | Cod sursa (job #1584988)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXN 50000
int v[MAXN], p1[MAXN], p2[MAXN], d1, d2;
char semn[MAXN + 1];
int main(){
srand(time(0));
FILE *in = fopen("semne.in", "r");
int n, i, x;
long long sc, s;
fscanf(in, "%d%lld", &n, &s);
for(i = 0; i < n; i++){
fscanf(in, "%d", &v[i]);
sc += v[i];
p1[i] = i;
}
fclose(in);
d1 = n;
while(sc != s){
while(sc > s){
x = rand() % d1;
sc -= 2 * v[p1[x]];
p2[d2] = p1[x];
d2++;
p1[x] = p1[d1 - 1];
d1--;
}
while(sc < s){
x = rand() % d2;
sc += 2 * v[p2[x]];
p1[d1] = p2[x];
d1++;
p2[x] = p2[d2 - 1];
d2--;
}
}
for(i = 0; i < d1; i++)
semn[p1[i]] = '+';
for(i = 0; i < d2; i++)
semn[p2[i]] = '-';
semn[n] = 0;
FILE *out = fopen("semne.out", "w");
fputs(semn, out);
fclose(out);
return 0;
}