Cod sursa(job #3239684)

Utilizator nicushor21Pirlog Marian Nicolae nicushor21 Data 7 august 2024 12:35:04
Problema Branza Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
long long n,s,t,pret,cant[100001],i;
struct sap{
    long long p,c;
}v[100001],brz;
int main()
{
    fin>>n>>s>>t;
    for(i=1;i<=n;i++)
        fin>>v[i].p>>v[i].c,cant[i] = v[i].c + cant[i-1];
    pret = cant[min(n,t)] * v[1].p;
    brz.c = cant[min(n,t)] - cant[1];
    brz.p = 1;
    for(i=2;i<=n;i++){
        if(brz.c == 0 || (v[i].p * v[i].c <= v[i].c * (v[brz.p].p + (i-brz.p) * s))){
            pret -= brz.c * v[brz.p].p;
            pret += (cant[min(n,i+t-1)]-cant[i-1]) * v[i].p;
            brz.c = cant[min(n,i+t-1)] - cant[i];
            brz.p = i;
        }else{
            brz.c -= v[i].c;
            pret += v[i].c * (i-brz.p) * s;
            if(brz.c == 0){
                pret += (cant[min(n,i+t-1)]-cant[i]) * v[i].p;
                brz.c = cant[min(n,i+t-1)] - cant[i];
                brz.p = i;
            }
        }
    }
    fout<<pret;
    return 0;
}