记录编号 165208 评测结果 AAAAAAAAAAAAAAA
题目名称 [POI 2014] 快递员 最终得分 100
用户昵称 Gravatar天一阁 是否通过 通过
代码语言 C++ 运行时间 6.999 s
提交时间 2015-06-10 17:43:45 内存使用 6.88 MiB
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <vector>

#define Rand() (rand()<<12+rand()+1)
#define N 500010
#define PB(x) push_back(x)

using namespace std;

int a[N],n,m;
vector<int> v[N];

int calc(int x,int l,int r){
	int ans=lower_bound(v[x].begin(),v[x].end(),r+1)-
		v[x].begin();
	ans-=lower_bound(v[x].begin(),v[x].end(),l)-v[x].begin();
	return ans;
}

int main(){
	freopen("kur.in","r",stdin);
	freopen("kur.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		v[a[i]].PB(i);
	}
	for(int i=1;i<=n;i++) sort(v[i].begin(),v[i].end());
	for(int i=1,l,r;i<=m;i++){
		scanf("%d%d",&l,&r);
		if(l>r) swap(l,r);
		for(int t=1;t<=22;t++){
			int x=rand()%(r-l+1)+l;
			if(calc(a[x],l,r)*2>(r-l+1)){
				printf("%d\n",a[x]);
				goto L;
			}
		}
		puts("0");
		L:;
	}
	return 0;
}