Cod sursa(job #980721)

Utilizator thewildnathNathan Wildenberg thewildnath Data 5 august 2013 15:13:20
Problema Branza Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>

inline int min(int a,int b)
{
    return a<b?a:b;
}

inline int max(int a,int b)
{
    return a>b?a:b;
}

int c[100002],p[100002];
char f[100002];

int main()
{
    freopen("branza.in","r",stdin);
    freopen("branza.out","w",stdout);
    int n,s,t,M,m=0,i,j;
    long long sol=0,aux;
    scanf("%d%d%d",&n,&s,&t);
    for(i=1;i<=n;++i)
        scanf("%d%d",&p[i],&c[i]);
    for(i=1;i<=n;++i)
    {
        if(f[i]==0)
            sol+=(long long)p[i]*c[i];
        M=min(i+t,n);
        m=max(m,i);
        for(j=m+1;j<=M;++j)
        {
            aux=(long long)p[i]+(long long)s*(j-i);
            if(aux<p[j])
            {
                f[j]=1;
                sol+=aux*c[j];
                m=j;
            }
            else
                break;
        }
    }
    printf("%lld\n",sol);
}