Pagini recente » Cod sursa (job #1980330) | Cod sursa (job #1608453) | Cod sursa (job #1831751) | Cod sursa (job #1864884) | Cod sursa (job #609141)
Cod sursa(job #609141)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MaxN 50100
#define ll long long
ll A[MaxN];
int B[MaxN];
int N;
ll S;
ll sum = 0;
void citire(void)
{
FILE *f = fopen("semne.in","r");
fscanf(f,"%d %d",&N,&S);
for(int i=1;i<=N;i++)
fscanf(f,"%d ",&A[i]);
fclose(f);
}
void FillSemn(void)
{
for(int i=1;i<=N;i++)
{
B[i] = rand()%2;
if(B[i])
sum += A[i];
else
sum -= A[i];
}
}
void solve(void)
{
FillSemn();
int random;
for(;sum != S;)
{
random = rand()%N+1;
if(B[random] && S < sum)
{
sum -= 1LL*2*A[random];
B[random] = 1-B[random];
}
else if(!B[random] && S > sum)
{
sum += 1LL*2*A[random];
B[random] = 1-B[random];
}
printf("%d\n",sum);
}
}
int main()
{
FILE *g = fopen("semne.out","w");
citire();
srand((unsigned)time(0));
solve();
for(int i=1;i<=N;i++)
if(B[i])
fprintf(g,"+");
else
fprintf(g,"-");
fclose(g);
return 0;
}