我这代码错哪了?
#include<bits/stdc++.h>
using namespace std;
struct bin{
int x,y;
}a[510];
int d[510][510],f[510][510];
int cmp(bin u,bin v)
{
if(u.x!=v.x) return u.x<v.x;
return u.y<v.y;
}
int main()
{
int n,m;
cin>>n>>m;
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=1;j<i;j++)
if(a[i].x<a[j].x||a[i].y<a[j].y)
d[i][j]=-1;
else
d[i][j]=a[i].x-a[j].x+(a[i].y-a[j].y);
for(int i=1;i<=n;i++)
for(int k=0;k<=m;k++)
f[i][k]=k+1;
for(int i=1;i<=n;i++)
for(int j=1;j<i;j++)
{
if(d[i][j]==-1) continue;
for(int k=0;k<=m;k++)
{
if(d[i][j]==1)
f[i][k]=max(f[i][k],f[j][k+1]);
if(k>=d[i][j]-1)
f[i][k]=max(f[i][k],f[j][k-d[i][j]+1]+d[i][j]);
}
}
int ans=0;
for(int i=1;i<=n;i++)
ans=max(ans,f[i][m]);
cout<<ans<<endl;
return 0;
}