Pagini recente » Rating Bolat Alexandra (Alexandrabolat) | Cod sursa (job #1596329) | Cod sursa (job #2154719) | Cod sursa (job #759325) | Cod sursa (job #965548)
Cod sursa(job #965548)
#include <fstream>
#include <vector>
#include <bitset>
#include <queue>
#include <algorithm>
#include <ctime>
#include <utility>
using namespace std;
ifstream cin("semne.in");
ofstream cout("semne.out");
const int MAXN = 50005;
int v[MAXN] , pls[MAXN], mins[MAXN];
bitset<MAXN> semn;
long long sum, s;
int n, poz, nrp, nrm;
int main()
{
srand(time(NULL));
cin >> n >> s;
for(int i = 1 ; i <= n ; ++ i)
{
cin >> v[i];
pls[++nrp] = i;
semn[i] = 1;
sum += 1LL*v[i];
}
while( sum != s)
{
if(sum > s)
{
poz=rand()%nrp+1;
sum-=2*v[pls[poz]];
semn[pls[poz]]=0;
mins[++nrm]=pls[poz];
swap(pls[poz],pls[nrp]);
nrp--;
}
else
{
poz=rand()%nrm+1;
sum+=2*v[mins[poz]];
semn[mins[poz]]=1;
pls[++nrp]=mins[poz];
swap(mins[poz],mins[nrm]);
nrm--;
}
}
for(int i = 1 ; i <= n ; ++ i)
cout << ((semn[i]) ? "+" : "-");
return 0;
}