首页 新闻 会员 周边 捐助

求救问题(c++

0
悬赏园豆:60 [待解决问题]

P2139. 第k次出现的位置

[题目]
(https://marsoj.cn/p/P2139)
1000ms 256MiB
说明
我们有一个N个元素的序列A=(a1,a2,...,aN)

然后进行如下Q次询问:

对于第i次询问:给你一对整数(xi,ki) ,现在从左到右挨个从序列A中查找元素xi,找到xi出现恰好ki次的当下下标,或者输出-1,表示不存在该下标。

输入格式
第一行输入N和Q

第二行输入序列A

对于接下来的Q行,每行输入一对整数(xi,ki)

输出格式
对于第i次询问:给你一对整数(xi,ki) ,从左到右挨个从序列A中查找元素xi,找到xi出现恰好ki次的当下下标,或者输出-1,表示不存在该下标。

样例
输入数据 1
6 8
1 1 2 3 1 2
1 1
1 2
1 3
1 4
2 1
2 2
2 3
4 1
输出数据 1
1
2
5
-1
3
6
-1
-1
提示
【样例解释 #1】
1出现在1,2,5三个位置

【数据规模与约定】

对于80%的数据保证1<=N<=104,1<=Q<=104

对于100%的数据保证1<=N<=2105,1<=Q<=2105,0<=ai<=109,0<=xi<=109,1<=ki<=N

#include <bits/stdc++.h>
#define long long int
#define N 200000+10
#pragma GCC optimize(3,"Ofast","inline")
using namespace std;
int n,q;
int a[N];
signed main()
{
//    freopen("god.in", "r", stdin);
//    freopen("god.out", "w", stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>q;
	for(int i=1; i<=n; i++) {
		cin>>a[i];
	}

	while(q--) {
		int x,k;
        bool flag=false;
		cin>>x>>k;
		int xb=0;
		for(int i=1; i<=n; i++) {
			if(a[i]==x) {
				xb++;
				if(xb==k) {
                    cout<<i<<'\n';
                    flag=true;
				    break;
				}
			}
		}
        if(!flag)
        {
            cout<<-1<<'\n';
        }
    }
	return 0;
}
C++
amcplayer的主页 amcplayer | 初学一级 | 园豆:70
提问于:2024-11-19 23:24
< >
分享
所有回答(1)
0

要解决什么问题?

那一抹余晖 | 园豆:404 (菜鸟二级) | 2024-11-20 08:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册