Cod sursa(job #2046573)

Utilizator rares1012Rares Cautis rares1012 Data 23 octombrie 2017 21:55:37
Problema Branza Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
#include <stdlib.h>

int deque[100000][2];

int main()
{
    int n,p,q,pret,req,f=0,l=0,s=0,i;
    FILE*fi,*fo;
    fi=fopen("branza.in","r");
    fo=fopen("branza.out","w");
    fscanf(fi,"%d%d%d",&n,&p,&q);
    deque[0][0]=100000000;
    for(i=0;i<n;i++){
        fscanf(fi,"%d%d",&pret,&req);
        if(i-deque[f][1]>q)
            f++;
        l++;
        while(l>f && deque[l-1][0]+(i-deque[l-1][1])*p>pret)
            l--;
        deque[l][0]=pret;
        deque[l][1]=i;
        s+=req*(deque[f][0]+(i-deque[f][1])*p);
    }
    fprintf(fo,"%d",s);
    fclose(fi);
    fclose(fo);
    return 0;
}