比赛 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;
}