Cod sursa(job #1897149)

Utilizator RaduGiucleaGiuclea Radu RaduGiuclea Data 1 martie 2017 10:41:56
Problema Carnati Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
using namespace std;
struct me{int t;int p;};
struct me2{int t;int v;};
me v[2001];
int smax(int p,int n,int c)
{
    int i,x;
    me2 d[2001];
    for(i=1;i<=n;i++)
        {
            if(v[i].p>=p)
                x=p;
            else x=0;
            if(d[i-1].v+x-(v[i].t-d[i-1].t)*c>=x-c)
                d[i].v=d[i-1].v+x-(v[i].t-d[i-1].t)*c,d[i].t=v[i].t;
            else d[i].v=x-c,d[i].t=v[i].t;
        }
    int mx=-1;
    for(i=1;i<=n;i++)
        if(d[i].v>mx)
            mx=d[i].v;
    return mx;
}
int main()
{
    freopen("carnati.in","r",stdin);
    freopen("carnati.out","w",stdout);
    int n,c,p,i,mx=-1;
    scanf("%d%d",&n,&c);
    for(i=1;i<=n;i++)
        scanf("%d%d",&v[i].t,&v[i].p);
    for(i=1;i<=n;i++)
    {
        p=v[i].p;
        if(mx<smax(p,n,c))
            mx=smax(p,n,c);
    }
    printf("%d",mx);
    return 0;
}