Pagini recente » Cod sursa (job #1051400) | Cod sursa (job #3242694) | Cod sursa (job #1521897) | Cod sursa (job #647111) | Cod sursa (job #2024460)
#include <bits/stdc++.h>
using namespace std;
const int maxN=5e4+4;
int n;
int v[maxN];
char sol[maxN];
long long sum,curr;
vector<int> Plus;
vector<int> Minus;
int main()
{
freopen("semne.in","r",stdin);
freopen("semne.out","w",stdout);
scanf("%d %lld",&n,&sum);
for(int i=1;i<=n;i++){
scanf("%d",&v[i]);
if(rand()%2){
curr+=v[i];
Plus.push_back(i);
sol[i]='+';
}
else{
curr-=v[i];
Minus.push_back(i);
sol[i]='-';
}
}
while(curr!=sum)
if(curr>sum)
{
int pos=rand()%Plus.size();
curr-=2*v[Plus[pos]];
sol[Plus[pos]]='-';
Minus.push_back(Plus[pos]);
swap(Plus[pos],Plus.back());
Plus.pop_back();
}
else
{
int pos=rand()%Minus.size();
curr+=2*v[Minus[pos]];
sol[Minus[pos]]='+';
Plus.push_back(Minus[pos]);
swap(Minus[pos],Minus.back());
Minus.pop_back();
}
printf("%s",sol+1);
return 0;
}