。每个人都有一个考试等级,教室里面一共有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 ;
}
}
浙公网安备 33010602011771号