Cod sursa(job #941577)

Utilizator dvh312dvh312 dvh312 Data 19 aprilie 2013 07:06:30
Problema Euro Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>

#define f1 "euro.in"
#define f2 "euro.out"
using namespace std;

int main(){
    ifstream fi;fi.open(f1);
    ofstream fo;fo.open(f2);
    long a[35000];
    long n,t;
    fi>>n>>t;
    for (int i=1;i<=n;i++){
        fi>>a[i];
    }
    long csmax[35000];
    long tong[35000];
    long f[35000];
    int l;
    tong[0]=0;
    l=1;
    csmax[1]=l;
    tong[1]=a[1];
    for (int i=2;i<=n;i++){
        tong[i]=tong[i-1]+a[i];
        if (tong[i]-tong[l-1]<a[i]) l=i;
        csmax[i]=l;
    }
    long x,y;
    int solan[35000];
    for (int i=1;i<=n;i++){
        x=(f[csmax[i]-1]+(tong[i]-tong[csmax[i]-1])*i-(solan[csmax[i]-1]+1)*t);
        y=f[i-1]+a[i]*i;
        if (x>y){
            f[i]=x;
            solan[i]=solan[csmax[i]-1]+1;
        } else {
            f[i]=y;
        }
    }
    fo<<f[n];
    fi.close();
    fo.close();
    return 0;
}