比赛 CSP2022普及组 评测结果 AATATAAEEEATTTTEEEEE
题目名称 上升点列 最终得分 30
用户昵称 崔宸铭 运行时间 7.374 s
代码语言 C++ 内存使用 4.70 MiB
提交时间 2022-10-29 17:24:31
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=510;
int n,k,res;
bool a[1010][1010];
int xx[N],yy[N];
void dfs(int x,int y,int sum,int ki){
	int p=1;
	if(ki<=0) p=0;
	if(!p&&!a[x+1][y]&&!a[x][y+1]){
		res=max(res,sum);
		return;
	}
	if(a[x+1][y]) dfs(x+1,y,sum+1,ki);
	else if(p) dfs(x+1,y,sum+1,ki-1);
	if(a[x][y+1]) dfs(x,y+1,sum+1,ki);
	else if(p) dfs(x,y+1,sum+1,ki-1);
}
int main(){
	freopen("csp2022pj_point.in","r",stdin);
	freopen("csp2022pj_point.out","w",stdout);
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>xx[i]>>yy[i];
		a[xx[i]][yy[i]]=1;
	}
	for(int i=1;i<=n;i++){
		dfs(xx[i],yy[i],1,k);
	}
	cout<<res;
	return 0;
}