结构体+二分求助,谢谢!
  • 板块P1918 保龄球
  • 楼主Anthony1
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/8/13 17:29
  • 上次更新2024/8/13 20:19:47
查看原帖
结构体+二分求助,谢谢!
136770
Anthony1楼主2024/8/13 17:29

只能过样例+测试点1

#include<bits/stdc++.h>
using namespace std;
#define int long long
struct u {
	int s,v;
}a[100005];
int n,k;
bool cmp(u x,u y) {
	return x.v>y.v;
}
int findmy(int l,int r) {
	int mid=(l+r)/2;
	if(a[mid].v==k) return a[(l+r)/2].s;
	if(k>a[mid].v) return findmy(l,mid-1);
	else return findmy(mid+1,r);
}
signed main() {
	cin>>n;
	for(int ooo=0; ooo<n; ooo++) {
		cin>> a[ooo].v;
		a[ooo].s=ooo+1;
	}
	sort(a,a+n,cmp);
//	for(int ooo=0; ooo<n; ooo++) cout<<a[ooo].s<<" "<<a[ooo].v<<endl;
	int Q;
	cin>>Q;
	int y[Q];
	for(int ooo=0; ooo<Q; ooo++) {
		cin>>k;
		int ans;
		if(k>a[0].v||k<a[n-1].v) {
//			cout<<0<<endl;
			ans=0;
			break;
		}
//		for(int oo=0; oo<n; oo++) {
//			if(a[oo].v==o) {
//				ans=a[oo].s;
//				break;
//			}
//		}
		else ans=findmy(0,n);
		y[ooo]=ans;

	}
//	cout<<endl<<endl;
	for(int ooo=0; ooo<Q; ooo++)cout<<y[ooo]<<endl;
	return 0;
}

2024/8/13 17:29
加载中...