2015.7.15 codeforces 2组B题

来源:互联网 发布:noteexpress mac版 编辑:程序博客网 时间:2024/06/10 09:44

题目源


#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#include <algorithm>#include <queue>#include <map>#include <set>#include <stack>#include <sstream>#define PI acos(-1.0)const int  inf =  (1<<30) - 10;using namespace std;inline int get_int(){    int r=0;    char c;    while((c=getchar())!=' '&&c!='\n')        r=r*10+c-'0';    return r;}inline void out(int x){    if(x>10)    {        out(x/10);    }    putchar(x % 10 + '0');    putchar('\n');}/****************************************/int a[100005];           //输入记录;int b[1000005];          //总数记录int c[1000005];          //初始位置记录int main(){    int n,l,m,r,k,i;    scanf("%d",&n);    m=0;                 //记录最大出现数    for(i=1;i<=n;i++)    {        scanf("%d",&a[i]);        b[a[i]]++;        if(b[a[i]]==1)    //记录首次出现的位置        {            c[a[i]]=i;        }        if(b[a[i]]>m)     //记录最大出现数        {            m=b[a[i]];        }    }    k=inf;                //记录最小间隔    for(i=n;i>=1;i--)     //搜索最后位置    {        if(b[a[i]]==m)    //如果为最大出现数        {            if(i-c[a[i]]<=k) //找到最小间隔数并更新            {                l=c[a[i]];                r=i;                k=i-c[a[i]];            }            b[a[i]]--;     //注销最大出现数,防止再次被搜索        }    }    printf("%d %d",l,r);}


0 0
原创粉丝点击