Pagini recente » Cod sursa (job #1915075) | Cod sursa (job #281572) | Cod sursa (job #1796141) | Cod sursa (job #2072612) | Cod sursa (job #984917)
Cod sursa(job #984917)
#include<cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
const int NMAX = 50005;
int i,N,P,M,Poz;
int A[NMAX],Plus[NMAX],Minus[NMAX];
long long S,Sum;
char Sign[NMAX];
int main()
{
freopen("semne.in","r",stdin);
freopen("semne.out","w",stdout);
srand(time(0));
scanf("%d%lld",&N,&S);
for(i=1;i<=N;i++)
{
scanf("%d",&A[i]);
if(Sum<S)
{
Sum+=A[i];
Sign[i]='+';
Plus[++P]=i;
}
else
{
Sum-=A[i];
Sign[i]='-';
Minus[++M]=i;
}
}
while(Sum!=S)
{
if(Sum<S)
{
Poz=rand()%M+1;
Sign[Minus[Poz]]='+';
Sum+=2*A[Minus[Poz]];
Plus[++P]=Minus[Poz];
Minus[Poz]=Minus[M--];
}
else
{
Poz=rand()%P+1;
Sign[Plus[Poz]]='-';
Sum-=2*A[Plus[Poz]];
Minus[++M]=Plus[Poz];
Plus[Poz]=Plus[P--];
}
}
printf("%s",Sign+1);
return 0;
}