Pagini recente » Cod sursa (job #312824) | Cod sursa (job #2516530) | Cod sursa (job #3285218) | Cod sursa (job #2540967) | Cod sursa (job #3125004)
#include <bits/stdc++.h>
using namespace std;
ifstream in("semne.in");
ofstream out("semne.out");
int n;
int v[50005];
int ans[50005];
long long sum, s;
vector<int> add, sub;
int main()
{
in>>n>>s;
for(int i = 1; i<=n; i++)
{
in>>v[i];
sum += v[i];
add.push_back(v[i]);
}
while(sum != s)
{
if(sum > s)
{
if(add.empty())
{
return 0;
}
int poz = rand() % add.size();
sum -= 2 * v[add[poz]];
sub.push_back(add[poz]);
swap(add[poz], add[add.size()-1]);
add.pop_back();
}
else
{
if(sub.empty())
{
return 0;
}
int poz = rand() % sub.size();
sum += 2 * v[sub[poz]];
add.push_back(sub[poz]);
swap(sub[poz], sub[sub.size()-1]);
sub.pop_back();
}
}
for(int i = 0; i<add.size(); i++)
{
ans[add[i]] = 1;
}
for(int i = 1; i<=n; i++)
{
if(ans[i] == 1)
{
out<<"+";
}
else
{
out<<"-";
}
}
return 0;
}