Cod sursa(job #609141)

Utilizator maritimCristian Lambru maritim Data 19 august 2011 18:47:11
Problema Semne Scor 35
Compilator cpp Status done
Runda Lista lui wefgef Marime 0.97 kb
#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;
}