您的位置:首页 > 其它

cf B. Jeff and Periods

2014-08-22 11:06 821 查看
http://codeforces.com/contest/352/problem/B

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a[100010];
int n;
bool vis[100010];
int len;
struct node
{
int x,id;
bool operator <(const node &a)const
{
return (x<a.x)||(x==a.x&&id<a.id);
}
} p[100010],p1[100010];
int main()
{
while(scanf("%d",&n)!=EOF)
{
memset(vis,0,sizeof(vis));
int cnt=0;
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
p[cnt].x=a[i];
p[cnt++].id=i;
}
sort(p,p+cnt);
bool flag1=false;
int cnt1=0;
bool flag2=false;
bool flag3=false;
for(int i=0; i<cnt; i++)
{
if(!vis[p[i].x])
{
if(!flag1)
{
flag1=true;
}
else
{
if(!flag2)
{
p1[cnt1].x=p[i-1].x;
p1[cnt1++].id=len;
}
}
flag2=false;
flag3=false;
len=0;
vis[p[i].x]=true;
}
else
{
if(flag2)continue;
if(!flag3)
{
len=p[i].id-p[i-1].id;
flag3=true;
}
else
{
if(p[i].id-p[i-1].id!=len)
{
flag2=true;
}
}
}
}
if(!flag2)
{
p1[cnt1].x=p[cnt-1].x;
p1[cnt1++].id=len;
}
printf("%d\n",cnt1);
for(int i=0; i<cnt1; i++)
{
printf("%d %d\n",p1[i].x,p1[i].id);
}
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: