Pagini recente » Cod sursa (job #339258) | Cod sursa (job #845934) | Cod sursa (job #1110383) | Cod sursa (job #2055317) | Cod sursa (job #771335)
Cod sursa(job #771335)
#include<fstream>
#include<cstdlib>
#include<ctime>
using namespace std;
int a[50005],p[50005],m[50005];
char sol[50005];
int main(void)
{
ifstream fin("semne.in");
ofstream fout("semne.out");
int N,i,j,n,rd,np=0,nm=0; long long S,sc=0;
srand(time(0));
fin>>N>>S;
for(i=1;i<=N;++i)
{
fin>>a[i];
if(i&1)
{
p[++np]=i;
sc+=a[i];
sol[i]='+';
}
else
{
m[++nm]=i;
sc-=a[i];
sol[i]='-';
}
}
while(sc!=S)
{
if(sc<S)
{
rd=(rand()%nm)+1;
sc+=2*a[m[rd]];
sol[m[rd]]='+';
m[rd]=m[nm--];
}
if(sc>S)
{
rd=(rand()%np)+1;
sc-=2*a[p[rd]];
sol[p[rd]]='-';
p[rd]=p[np--];
}
}
for(i=1;i<=N;++i)fout<<sol[i];
return 0;
}