Cod sursa(job #980726)

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

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

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

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

int main()
{
    freopen("branza.in","r",stdin);
    freopen("branza.out","w",stdout);
    long long n,s,t,M,m=0,i,j;
    long long sol=0,aux;
    scanf("%lld%lld%lld",&n,&s,&t);
    for(i=1;i<=n;++i)
        scanf("%lld%lld",&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);
}