Pagini recente » Cod sursa (job #1947636) | Cod sursa (job #2069283) | Cod sursa (job #99552) | Cod sursa (job #947444) | Cod sursa (job #1927586)
#include<bits/stdc++.h>
using namespace std;
ifstream f("semne.in");
ofstream g("semne.out");
char sol[1<<16];
long long sum,S;
int n,p,m,t,i,a[1<<16],Plus[1<<16],Minus[1<<16];
int main()
{
f>>n>>S;
srand(time(0));
for(i=1;i<=n;i++)
{
f>>a[i];
t=rand()%2;
if(t)
{
Plus[++p]=i;
sum+=a[i];
sol[i]='+';
}
else
{
Minus[++m]=i;
sum-=a[i];
sol[i]='-';
}
}
while(sum!=S)
{
if(sum<S)
{
t=rand()%m+1;
Plus[++p]=Minus[t];
Minus[t]=Minus[m--];
sol[Plus[p]]='+';
sum+=2*a[Plus[p]];
}
else
{
t=rand()%p+1;
Minus[++m]=Plus[t];
Plus[t]=Plus[p--];
sol[Minus[m]]='-';
sum-=2*a[Minus[m]];
}
}
g<<(sol+1);
return 0;
}