Cod sursa(job #67807)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 25 iunie 2007 17:22:47
Problema Branza Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.5 kb
#include <stdio.h>

#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define nmax 100111

long long n,S,T,Q,sf,cod[nmax],v[nmax];
long long sol;

int main()
{
    long long i,a,b;
    freopen("branza.in","r",stdin);
    freopen("branza.out","w",stdout);
    scanf("%lld %lld %lld",&n,&S,&T);
    Q=0,sf=-1;
    FOR(i,0,n)
    {
	scanf("%lld %lld",&a,&b);
	for(;Q<=sf&&(i-cod[sf])*S+v[sf]>=a;--sf);
	cod[++sf]=i;
	v[sf]=a;
	if(i-cod[Q]>T)
	    Q++;
	sol+=(v[Q]+(i-cod[Q])*S)*b;
    }
    printf("%lld\n",sol);
    return 0;
}