题解 P1702 【突击考试】

· · 题解

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a[100010],b[100010],c[100010],d[100010];
int main()
{
    int n,i,m,sum=0,k=10;
    cin>>n;
    for(i=1;i<=n;i++)
        scanf("%d%d",&a[i],&b[i]);
    c[1]=1;d[1]=1;
    for(i=2;i<=n;i++)
    {
        if(a[i]==a[i-1])c[i]=c[i-1]+1;
        if(a[i]==b[i-1])c[i]=max(d[i-1]+1,c[i]);
        if(b[i]==b[i-1])d[i]=d[i-1]+1;
        if(b[i]==a[i-1])d[i]=max(c[i-1]+1,d[i]);
        if(c[i]==0)c[i]=1;
        if(d[i]==0)d[i]=1;
    }
    for(i=1;i<=n;i++)
    {
        if(c[i]>sum){sum=c[i];k=a[i];}
            else if(c[i]==sum&&a[i]<k)k=a[i];
        if(d[i]>sum){sum=d[i];k=b[i];}
            else if(d[i]==sum&&b[i]<k)k=b[i];
    }
    printf("%d %d",sum,k);
    return 0;
}