Pagini recente » Cod sursa (job #2273619) | Cod sursa (job #2447597) | Cod sursa (job #1607217) | Cod sursa (job #2049210) | Cod sursa (job #1557473)
#include<fstream>
#include<cstdlib>
#include<ctime>
//#include<vector>
using namespace std;
int ve[50505];
bool semn[50505];
int main()
{
ifstream cin("semne.in");
ofstream cout("semne.out");
//vector<int> plus;
//vector<int> minus;
int plus[50505],minus[50505];
srand(time(0));
int n,x,s,size_plus=0,size_minus=0;
long long suma=0;
cin>>n>>s;
for(int i=0;i<n;++i)
{
cin>>ve[i];
if(rand() % 2 ==1){
// plus.push_back(i);
plus[size_plus++]=i;
suma+=ve[i];
semn[i]=1;
}
else
{
//minus.push_back(i);
minus[size_minus++]=i;
suma-=ve[i];
semn[i]=0;
}
}
while(suma!=s)
{
if(suma>s)
{
//x=rand() % plus.size();
x=rand() % size_plus;
semn[plus[x]]=0;
// minus.push_back(plus[x]);
minus[size_minus++]=plus[x];
suma=suma-2*ve[plus[x]];
swap(plus[x],plus[size_plus-1]);
//plus.pop_back();
--size_plus;
}
if(suma<s)
{
//x=rand() % minus.size();
x=rand() % size_minus;
semn[minus[x]]=1;
//plus.push_back(minus[x]);
plus[size_plus++]=minus[x];
suma=suma+2*ve[minus[x]];
swap(minus[x],minus[size_minus-1]);
//minus.pop_back();
--size_minus;
}
}
for(int i=0;i<n;++i)
{
if(semn[i]==1)
cout<<"+";
else
cout<<"-";
}
return 0;
}