Cod sursa(job #1890760)

Utilizator ipus1Stefan Enescu ipus1 Data 23 februarie 2017 14:52:21
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int d[2001],vec[2001];
struct aa{int x,y;};
aa v[2001];
bool sortare(aa a,aa b)
    {if(a.x<b.x||(a.x==b.x&&a.y<b.y))
        return 1;
    return 0;
    }
int main ()
{freopen ("carnati.in","r",stdin);
freopen ("carnati.out","w",stdout);
int n,c,i,j,mx,mxx,k,x;
scanf("%d%d",&n,&c);
for(i=1;i<=n;i++)
    scanf("%d%d",&v[i].x,&v[i].y);
sort(v+1,v+n+1,sortare);
mxx=0;
for(i=1;i<=n;i++)
    {k=v[i].y;
    x=0;
    for(j=1;j<=n;j++)
        if(v[j].y>=k)
            {x++;
            vec[x]=v[j].x;
            }
    for(j=1;j<=x;j++)
        d[j]=max(k,d[j-1]+k-c*(vec[j]-vec[j-1]));
    mx=0;
    for(j=1;j<=x;j++)
        if(d[j]>mx)
            mx=d[j];
    if(mx>mxx)
        mxx=mx;
    }
printf("%d",mxx-c);
return 0;
}