Cod sursa(job #1731569)

Utilizator borcanirobertBorcani Robert borcanirobert Data 19 iulie 2016 11:55:54
Problema Euro Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
using namespace std;

ifstream fin("euro.in");
ofstream fout("euro.out");

const int MAX = 34575;
using LL = long long;
int N;
LL x;
LL K;
LL D[MAX];
LL sum[MAX];

void Read();
void Solve();
LL Trans( LL euro, int zi );

int main()
{
    Read();
    Solve();

    fin.close();
    fout.close();
    return 0;
}

void Read()
{
    int i;

    fin >> N >> K;
    for ( i = 1; i <= N; i++ )
    {
        fin >> x;
        sum[i] = x + sum[i - 1];
    }
}

void Solve()
{
    int i, j;

    for ( i = 1; i <= N; i++ )
    {
        D[i] = Trans(sum[i], i);

        for ( j = 1; j < i; j++ )
            if ( Trans(sum[i] - sum[j], i) + D[j] > D[i] )
                D[i] = Trans(sum[i] - sum[j], i) + D[j];
    }

    fout << D[N];
}

LL Trans( LL euro, int zi )
{
    LL rez = euro * (1LL*zi) - K;
    return rez;
}