记录编号 250655 评测结果 WWWWWWWWWWWWWWWWWTTW
题目名称 数字查询 最终得分 0
用户昵称 Gravatarsro dydxh orz 是否通过 未通过
代码语言 C++ 运行时间 19.206 s
提交时间 2016-04-15 16:52:31 内存使用 0.62 MiB
显示代码纯文本
#include <iostream>   
#include <cstdio>  
#include <algorithm>   
using namespace std;    
int ans=0,x1=0,a[40010],sum[40010],n,m;;

/*const int maxx=100020; 
struct  node
{    
	int maxx;
	int delta;
}tree[maxx*4]; 
int ax,ay,x,y,o
int i,j,k;
int del;
void updata(int left,int right,int root){  
	int mid;
	if ((x<left || x>right)) return;
	if (left==right){
		tree[root].maxx=y;
		return ;
	}
	mid=(left+right)/2;
	updata(left,mid,root*2);
	updata(mid+1,right,root*2+1);
	tree[root].maxx=max(tree[root*2].maxx,tree[root*2+1].maxx);
}
int search(int left,int right,int root){
	int mid,templ,tempr;
	if (x>right || y<left) return -20000000;
	if (x<=left && right<=y) return tree[root].maxx;
	mid=(left+right)/2;
	templ=search(left,mid,root*2);
	tempr=search(mid+1,right,root*2+1);
	return max(templ,tempr);
}
*/

int main(){
	freopen("numquery.in","r",stdin);	
	freopen("numquery.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		sum[i]=1;
	}
		
		for(int i=1;i<=n;i++)
			for(int j=i-1;j>0;j--)
				if(a[i]==a[j]){
					sum[i]=sum[j]+1;
					break;
				}
				
		for(int i=1;i<=m;i++){
			int ll,rr,l,r;
			scanf("%d%d",&ll,&rr);
			
			l=(ll+x1-1)%n+1;r=(rr+x1-1)%n+1;
			if(r<l){int temp=l;l=r;r=temp;}	
			
			int maxn=-1,fla=0;
			cout<<l<<' '<<r<<endl;
			
			for(int i=l;i<=r;i++){
				if(maxn==sum[i])
					fla=min(a[i],fla);
				if(maxn<sum[i]){
					maxn=sum[i];
					fla=a[i];
				}
			}
			printf("%d\n",fla);
			x1=fla;
		}

	return 0;   
}