萌新求助
查看原帖
萌新求助
824865
lraM41楼主2024/8/25 21:04

第一个样例没过,第二个过了(不用二分的暴力60,

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,q,a[300005],t[300005],cnt[300005],x,l,r,mid,sl,sr;
signed main(){
    cin>>n>>q;
    for(int i=1;i<=n;i++) cin>>a[i],t[a[i]]=i;
    for(int i=1;i<=n;i++) cnt[t[i]]=cnt[t[i-1]]+n-t[i]+1;//3 1 2 -- 6 2 3
   // for(int i=1;i<=n;i++) cout<<cnt[t[i]]<<' ';236
    while(q--){
        cin>>x;
        l=1,r=n;
        /*for(int i=1;i<=n;i++)
            if(x<=cnt[t[i]]) {sl=i;break;}*/
        while(l<=r){
            mid=(l+r)/2;
            if(cnt[t[mid]]>x){
                if(x>=cnt[t[mid-1]]){ sl=mid;break;}
                r=mid-1;
            }
            if(cnt[t[mid]]<x) l=mid+1;
        }
        cout<<t[sl]<<' '<<t[sl]+x-cnt[t[sl-1]]-1<<'\n';
    }return 0;
}
2024/8/25 21:04
加载中...