题目描述 Description
一日,教授决定进行一次突击考试。每个人都有一个考试等级,教室里面一共有N个课桌,按照顺序排成一列,每个课桌可以坐两个人,记他们的能力等级为(A[i],B[i])。现在教授决定对能力等级为K的人进行测验。他会从这N排中选择连续的L排进行测验,要求这L排中的每一排至少有一个人考试等级为K。现在我们想知道L的最大值以及对应的等级K。
输入描述 Input Description
第1行:1个整数,N
第2..N+1行:每行2个整数,表示A[i],B[i]
输出描述 Output Description
第1行:2个整数,L,K,要求在L最大的条件下K最小。
样例输入 Sample Input
3
3 5
4 5
1 3
样例输出 Sample Output
2 5
数据范围及提示 Data Size & Hint
1≤N≤100000,1≤A[i],B[i]≤5
分类标签 Tags 点此展开
#include<cstdio> #include<iostream> using namespace std; struct node{ int x;int y; }e[110000]; int main(){ int n,k,ans=0; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d%d",&e[i].x,&e[i].y); } for(int i=1;i<=5;i++){//1≤A[i],B[i]≤5 int t=0; for(int j=1;j<=n;j++){ if(e[j].x==i||e[j].y==i) t++;//枚举 else t=0; if(t>ans){//保存当前最优方案 ans=t; k=i; } } } printf("%d %d ",ans,k); return 0; }