Pagini recente » Cod sursa (job #3285967) | Cod sursa (job #922754) | Cod sursa (job #2954329) | Cod sursa (job #573294) | Cod sursa (job #29894)
Cod sursa(job #29894)
#include <stdio.h>
#include <math.h>
long n,s,x[50001],ss=0;
int sign[50001];
void init()
{
srandom(84282);
}
void cit()
{
FILE *f;
long i;
f=fopen("semne.in","r");
fscanf(f,"%d %d",&n,&s);
for(i=0;i<n;i++)
{
fscanf(f,"%d",&x[i]);
//sign[i]=random()%2;
sign[i]=i%2;
if(sign[i]==1) ss+=x[i];
else ss-=x[i];
}
fclose(f);
}
void tip()
{
FILE *f;
long i;
f=fopen("semne.out","w");
for(i=0;i<n;i++)
if(sign[i]==0)
fprintf(f,"-");
else fprintf(f,"+");
fprintf(f,"\n");
fclose(f);
}
void rez()
{
long i;
while(s!=ss)
{
i=random()%n;
if(sign[i]==0)
{
if ( abs(s-ss-2*x[i]) < abs(s-ss) )
{
ss+=2*x[i];
sign[i]=1;
}
}
else
{
if ( abs(s-ss+2*x[i]) < abs(s-ss) )
{
ss-=2*x[i];
sign[i]=0;
}
}
}
}
int main()
{
init();
cit();
rez();
tip();
return 0;
}