RE0pts求条
查看原帖
RE0pts求条
1279390
Zqx_Vector_2014楼主2025/7/24 18:56
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define _n "\n"
const int mod=1e9+7;
const int inf=1e13;
int max(int A,int B){return (A>B)?A:B;}
int min(int A,int B){return (A<B)?A:B;}
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
template<class T>
void put(T print){cout<<print;}
const int N=1e6+10;
int sum[N],cnt[N],a[N],len,ans[N];
struct query{int l,r,k,id;}b[N];
bool cmp(query A,query B){
    if(A.l/len==B.l/len) return A.r<B.r;
    else return A.l/len<B.l/len;
}
void add(int i){
    sum[cnt[a[i]]]--;
    cnt[a[i]]++;
    sum[cnt[a[i]]]++;
}
void del(int i){
    sum[cnt[a[i]]]--;
    cnt[a[i]]--;
    sum[cnt[a[i]]]++;
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int n,m;cin>>n>>m;
    len=sqrt(n);
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=m;i++){
        cin>>b[i].l>>b[i].r>>b[i].k;
        b[i].id=i;
    }sort(b+1,b+m+1,cmp);
    int l=1,r=0;
    for(int i=1;i<=m;i++){
        while(b[i].l<l) add(--l);
        while(b[i].l>l) del(l++);
        while(b[i].r>r) add(++r);
        while(b[i].r<r) del(r--);
        int t=0,res=-1;
        for(int j=1;j<=n;j++){
            if(sum[j]) t++;
            if(t==b[i].k){res=j;break;}
        }ans[b[i].id]=res;
    }for(int i=1;i<=m;i++) cout<<ans[i]<<_n;
    return 0;
}
2025/7/24 18:56
加载中...