Pagini recente » Cod sursa (job #2279262) | Cod sursa (job #1243417) | Cod sursa (job #1296353) | Cod sursa (job #2959569) | Cod sursa (job #943469)
Cod sursa(job #943469)
#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, S, i, now = 0, poz;
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]] = 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]] = 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;
}