比赛 |
CSP2022普及组 |
评测结果 |
AAWWAAAAAAWWWWWAWWWW |
题目名称 |
上升点列 |
最终得分 |
45 |
用户昵称 |
金龙王 |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2022-10-29 16:40:06 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n,k,ans;
struct node{
long long x,y;
int z;
}a[610];
bool cmp(node x,node y){
if(x.x!=y.x) return x.x<y.x;
return x.y<y.y;
}
int main(){
freopen("csp2022pj_point.in","r",stdin);
freopen("csp2022pj_point.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%lld%lld",&a[i].x,&a[i].y);
sort(a+1,a+1+n,cmp);
a[1].z=1;
for(int i=2;i<=n;i++){
a[i].z=1;
for(int j=1;j<i;j++){
if(a[j].x<=a[i].x&&a[j].y<=a[i].y){
if(a[j].x==a[i].x&&a[i].y-a[j].y==1){
if(a[j].z+1>a[i].z) a[i].z=a[j].z+1;
}else if(a[j].y==a[i].y&&a[i].x-a[j].x==1){
if(a[j].z+1>a[i].z) a[i].z=a[j].z+1;
}
}
}
ans=max(ans,a[i].z);
}
printf("%d",ans+k);
return 0;
}