Pagini recente » Cod sursa (job #2486503) | Cod sursa (job #2485250) | Cod sursa (job #2238104) | Cod sursa (job #1685732) | Cod sursa (job #735401)
Cod sursa(job #735401)
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main() {
ifstream f("semne.in");
ofstream g("semne.out");
srand(time(NULL));
int n, v[50005], i;
long long sbun, s=0;
char semn[50005];
f>>n>>sbun;
for(i=1; i<=n; i++) {
f>>v[i];
s+=v[i];
semn[i]='+';
}
while(s!=sbun) {
if(s>sbun) { //trebuie sa scad un numar -> pun "-" la unu cu "+"
i=rand()%n +1;
while(semn[i]=='-' && i<n) i++; //i=rand()%n +1;
if(semn[i]=='-' && i==n) {
i=1;
while(semn[i]=='-') i++;
}
//am un v[i] cu "+";
semn[i]='-';
s-=2*v[i];
}
if(s<sbun) { //trebuie sa adun un numar -> pun "+" la unu cu "-"
i=rand()%n +1;
while(semn[i]=='+' && i<n) i++; //i=rand()%n +1;
if(semn[i]=='+' && i==n) {
i=1;
while(semn[i]=='+') i++;
}
//am un v[i] cu "-";
semn[i]='+';
s+=2*v[i];
}
}
for(i=1; i<=n; i++) g<<semn[i];
g<<"\n";
f.close();
g.close();
return 0;
}