。每个人都有一个考试等级,教室里面一共有N个课桌,按照顺序排成一列,每个课桌可以坐两个人,记他们的能力等级为(A[i],B[i])。

现在决定对能力等级为K的人进行测验。从这N排中选择连续的L排进行测验,要求这L排中的每一排至少有一个人考试等级为K。

现在想知道L的最大值以及对应的等级K。

 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1e5+4;
 int a[N],b[N] ,f[13][N],mx,n ;
signed main(){
	int i,j;
	cin>>n;
	for(int i=1;i<=n;i++) 
		cin>>a[i]>>b[i], mx=max(mx,max(a[i],b[i]));
	for(i=1;i<=mx;i++)
	 for(j=1;j<=n;j++)
	  if(a[j]==i||b[j]==i)
		f[i][j] = f[i][j-1]+1;
		
	int t=0;
	for(i=1;i<=mx;i++)
	 for(j=1;j<=n;j++) t=max(t,f[i][j]);
	
	for(i=1;i<=mx;i++)
	 for(j=1;j<=n;j++)
	 	if(f[i][j]==t){
	 		cout<<t<<' '<<i<<endl;
	 		return 0 ;
	 	}
}

 

posted on 2023-07-22 12:52  towboat  阅读(13)  评论(0)    收藏  举报