Pagini recente » Cod sursa (job #3186377) | Cod sursa (job #2881669) | Cod sursa (job #1562367) | Cod sursa (job #1873527) | Cod sursa (job #943472)
Cod sursa(job #943472)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
ifstream in ("semne.in");
ofstream out ("semne.out");
int V[50010];
int Plus[50010], Minus[50010];
bool Ok[50010];
int main()
{
srand (time (0));
int N, i, poz;
long long S, now = 0;
in >> N >> S;
for (i = 1; i <= N; i ++){
in >> V[i];
Plus[++ Plus[0]] = i;
now += V[i];
}
while (now != S){
if (now > S){
poz = (rand () % Plus[0]) + 1;
now -= 2 * V[Plus[poz]];
Ok[Plus[poz]] = 1;
Minus[++ Minus[0]] = Plus[poz];
swap (Plus[poz], Plus[Plus[0]]);
Plus[0] --;
}
if (now < S){
poz = (rand () % Minus[0]) + 1;
now += 2 * V[Minus[poz]];
Ok[Minus[poz]] = 0;
Plus[++ Plus[0]] = Minus[poz];
swap (Minus[poz], Minus[Minus[0]]);
Minus[0] --;
}
if (now == S)
break;
}
for (i = 1; i <= N; i ++)
if (!Ok[i])
out << "+";
else
out << "-";
return 0;
}