Cod sursa(job #21754)

Utilizator peanutzAndrei Homorodean peanutz Data 24 februarie 2007 11:25:21
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
#include <stdlib.h>

#define NMAX 200

int a[NMAX], n;
long sol[NMAX];

void read()
{
int i;

scanf("%d\n", &n);

for(i = 1; i <= n; ++i)
	scanf("%d ", &a[i]);
}


void dinamic()
{
int i, j, next;

sol[1] = a[1];

for(i = 2; i <= n; ++i)
	{
		sol[i] = sol[i-1] + a[i];

		for(j = i-1; j; --j)
			{
				next = abs(a[i]-a[j])*(i-j+1) + sol[j-1];

				if(next > sol[i])
					sol[i] = next;
			}
	}
}

void write()
{
printf("%ld\n", sol[n]);
}

int main()
{
freopen("reduceri.in", "r", stdin);
freopen("reduceri.out", "w", stdout);

read();

dinamic();

write();

fclose(stdin);
fclose(stdout);

return 0;
}