1 solutions

  • 1
    @ 2023-12-1 20:52:43

    #include<bits/stdc++.h>

    using namespace std;

    int n,k,ans;

    int c[1010][1010];

    struct point{

    int x,y;
    

    }a[1010]; bool cmp(const point

    &a,const point &b){

    if(a.x!=b.x) return a.x<b.x;

    return a.y<b.y;

    } int main(){

    cin>>n>>k;

    for(int i=1;i<=n;i++) cin>>a[i].x>>a[i].y;

    sort(a+1,a+1+n,cmp);

    for(int i=1;i<=n;i++){

    for(int j=0;j<=k;j++){

    c[i][j]=j+1;

    for(int z=1;z<i;z++){

    if(a[z].y>a[i].y)

    continue;

    int p=a[i].x-a[z].x+a[i].y-a[z].y-1;

    if(j>=p) c[i][j]=max(c[i][j],c[z][j-p]+p+1); } } }

    for(int i=1;i<=n;i++) ans=max(ans,c[i][k]); cout<<ans;

    return 0;

    }

    • 1

    Information

    ID
    744
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    10
    Tags
    # Submissions
    3
    Accepted
    2
    Uploaded By