Cod sursa(job #583768)

Utilizator maritimCristian Lambru maritim Data 22 aprilie 2011 16:37:07
Problema Multimi2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<stdio.h>

long long A[1001];
int N;
long long suma = 0;
unsigned long long sumax = 0;
long long a;
long long b;
int sa;
int sb;

void citire(void)
{
	FILE *f = fopen("expresie.in","r");
	
	fscanf(f,"%d ",&N);
	for(int i=1;i<=N;i++)
	{
		fscanf(f,"%lld",&A[i]);
		suma += A[i];
	}
	
	fclose(f);
}

void solve(void)
{
	sumax = suma;
	for(int i=1;i<=N-2;i++)
		if(sumax<suma-A[i]-A[i+1]-A[i+2]+A[i]*A[i+1]*A[i+2])
			sumax = suma-A[i]-A[i+1]-A[i+2]+A[i]*A[i+1]*A[i+2];
	a = 1;
	b = 1;
	sa = 0;
	sb = 0;
	for(int i=1;i<=N-1;i++)
	{
		if(a<A[i]*A[i+1])
		{
			b = a;
			sb = sa;
			a = A[i]*A[i+1];
			sa = A[i]+A[i+1];
		}
		else if(b<A[i]*A[i+1])
		{
			b = A[i]*A[i+1];
			sb = A[i]+A[i+1];
		}
	}
	if(sumax<suma-sa+a-sb+b)
		sumax = suma-sa+a-sb+b;
}

int main()
{
	FILE *f = fopen("expresie.out","w");
	
	citire();
	solve();
	fprintf(f,"%llu",sumax);
	
	fclose(f);
	return 0;
}