记录编号 |
250655 |
评测结果 |
WWWWWWWWWWWWWWWWWTTW |
题目名称 |
数字查询 |
最终得分 |
0 |
用户昵称 |
sro 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;
}