Cod sursa(job #962294)

Utilizator hrazvanHarsan Razvan hrazvan Data 14 iunie 2013 15:16:15
Problema Branza Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
int a[100000],b[100000],d[100000];

int dreapta(int st, int dr, int s)
{
    int i;
    i=dr-1;
    while(a[i]+s*(d[dr]-d[i])>a[dr]&&i>=st)    i--;
    i++;
    return i;
}

int main()
{
    FILE *in,*out;
    int st=0,dr=-1,n,s,t,i,cdr;
    long long rez=0;
    in=fopen("branza.in","r");
    out=fopen("branza.out","w");
    fscanf(in,"%d%d%d",&n,&s,&t);
    for(i=0;i<n;i++)
    {
        fscanf(in,"%d",&a[++dr]);
        fscanf(in,"%d",&b[dr]);
        d[dr]=i;
        cdr=dr;
        if(i-d[st]+1>t) st++;
        if(i!=0)
        {
            dr=dreapta(st,dr,s);
            a[dr]=a[cdr];
            d[dr]=d[cdr];
            b[dr]=b[cdr];
        }
        rez+=b[dr]*((a[st]+(d[dr]-d[st])*s));
    }
    fprintf(out,"%lld",rez);
    return 0;
}