本文共 954 字,大约阅读时间需要 3 分钟。
#includeusing namespace std;const int maxn=1e5+1;typedef long long ll;vector >v;ll a[maxn],n,m,k,q,maxx=0,num[maxn<<1],b[maxn<<1],cnt=0,cns;int main(){ scanf("%d %d",&n,&q); k=m=n; for(int i=1;i<=n;++i) scanf("%lld",&a[i]),num[i]=a[i],maxx=max(maxx,a[i]); if(q==0) return 0; v.push_back({ 0,0}); ll first=a[1]; if(a[1]!=maxx){ for(int i=2;i<=n;++i) { v.push_back({ first,a[i]}); if(first>a[i]) num[++m]=a[i]; else num[++m]=first,first=a[i]; if(first==maxx) { k=i;break;} } } else k=1; ll t=v.size()-1; for(int i=k;i<=m;++i) b[++cnt]=num[i]; while(q--) { scanf("%lld",&cns); if(cns<=t){ printf("%lld %lld\n",v[cns].first,v[cns].second); continue; } cns-=t; printf("%lld %lld\n",maxx,(cns%(m-k)==0)?b[cnt]:b[(cns%(m-k))+1]); }}
转载地址:http://zaewz.baihongyu.com/