Pagini recente » Cod sursa (job #531467) | Cod sursa (job #1831225) | Cod sursa (job #95222) | Cod sursa (job #1479006) | Cod sursa (job #1613729)
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<ctime>
#include<vector>
using namespace std;
vector<int> plu,minu;
int a[50005],poz,i,n;
long long sum,s;
char sol[50005];
int main()
{
ifstream cin("semne.in");
ofstream cout("semne.out");
cin>>n>>s;
int semn;
srand(time(NULL));
for(i=1;i<=n;i++)
{
cin>>a[i];
semn=rand()%2;
if(semn==0){
minu.push_back(i);
sum-=a[i];
}
else {
sum+=a[i];
plu.push_back(i);
}
}
while(sum!=s)
{
if(sum>s)
{
poz=rand()%plu.size();
minu.push_back(plu[poz]);
sum-=a[plu[poz]]*2;
swap(plu[poz],plu[plu.size()-1]);
plu.pop_back();
}
if(sum<s)
{
poz=rand()%minu.size();
plu.push_back(minu[poz]);
sum+=a[minu[poz]]*2;
swap(minu[poz],minu[minu.size()-1]);
minu.pop_back();
}
}
for(i=0;i<plu.size();i++)
{
sol[plu[i]]='+';
}
for(i=0;i<minu.size();i++)
sol[minu[i]]='-';
for(i=1;i<=n;i++)
cout<<sol[i];
return 0;
}