Cod sursa(job #2036151)

Utilizator rares1012Rares Cautis rares1012 Data 10 octombrie 2017 13:05:54
Problema Branza Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#include <stdlib.h>

int v[100000][2];

int main()
{
    long long int n,s,t,i,q,req,first=0,last,suma=0;
    FILE*fi,*fo;
    fi=fopen("branza.in","r");
    fo=fopen("branza.out","w");
    fscanf(fi,"%lld%lld%lld",&n,&s,&t);
    for(i=0;i<n;i++){
        fscanf(fi,"%d%d",&q,&req);
        if(i==0)
        {
            v[i][0]=q;
            last=0;
        }
        else {
            while(last>first && v[last-1][0]+(i-v[last-1][1])*s>=q)
                last--;
        }
        v[last][0]=q;
        v[last][1]=i;
        last++;
        if(i-v[first][1]==t+1)
            first++;
        suma+=(v[first][0]+(i-v[first][1])*s)*req;
    }
    fprintf(fo,"%lld",suma);
    fclose(fi);
    fclose(fo);
    return 0;
}