Cod sursa(job #64586)

Utilizator mariusdrgdragus marius mariusdrg Data 4 iunie 2007 14:12:20
Problema Euro Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>


const int maxn = 60000;

int i;
int n;
int k;
int a[maxn];
int din[maxn];
int max(int i,int j)
{
        return i > j ? i : j;
}
int st[maxn];
int m;
int t;
int sump[maxn];
int l;
int j;

int main()
{
        freopen("euro.in","r",stdin);
        freopen("euro.out","w",stdout);
        scanf("%d %d",&n,&k);
        for(i = 1;i <= n; ++i)
        {
                scanf("%d",&a[i]);
                sump[i] = sump[i - 1] + a[i];
        }
        for(i = 1;i <= n; ++i)
        {
                din[i] = -20000000;
                for(j = max(0,i - 256);j <= i; ++j)
                {
                        din[i] = max(din[i],din[j] + (sump[i] - sump[j]) * i - k);
                }
        }
/*        for(i = 1;i <= n; ++i)
        {
                din[i] = max(sump[i] * i - k, din[st[1]] + (sump[i] - sump[st[1]]) * i - k);
                while(din[st[l]] - sump[st[l]] && l)
                {
                        --l;
                }
                ++l;
                st[l] = i;
        } */
        printf("%d\n",din[n]);

        return 0;
}