Cod sursa(job #2399080)

Utilizator MoldooooooooMoldoveanu Stefan Moldoooooooo Data 6 aprilie 2019 20:30:39
Problema Euro Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
#include <vector>
#define MaxN 34568
using namespace std;
struct Str{
    long long int val;
    long long int ind;
};
vector<Str> Sol;
long long int N, T, i, S, x; bool k;
int main()
{
    freopen("euro.in", "r", stdin);
    freopen("euro.out", "w", stdout);
    scanf("%lld%lld", &N, &T);
    for(i=1; i<=N; ++i){
        scanf("%lld", &x);
        S+=x; k=true;
        if(S<0){Sol.push_back({S, i}); S=0; k=false;}
    }
    if(k==true) Sol.push_back({S, N});
    for(i=1; i<Sol.size(); ++i){
        if(Sol[i].val*Sol[i].ind+Sol[i-1].val*Sol[i-1].ind-2*T<(Sol[i].val+Sol[i-1].val)*Sol[i].ind-T){
            Sol[i].val+=Sol[i-1].val;
            Sol.erase(Sol.begin()+i-1);
            --i;
        }
    }
    S=0;
    for(i=0; i<Sol.size(); ++i) S=S+Sol[i].val*Sol[i].ind-T;
    printf("%lld", S);
    return 0;
}