mx求调
查看原帖
mx求调
593299
Qerucy楼主2023/8/14 14:27

rt,调不出来。

代码:

#include<bits/stdc++.h>

#define int long long

using namespace std;

int n,m;
int day,ans,ans1;
bool vis[300010];

struct node{
	int a,xb,b;
	bool operator <(const node &hzx)const{
		return b>hzx.b;
	}
	bool operator >(const node &hzx)const{
		return b<hzx.b;
	}
}a[300010];

priority_queue<node>q;

signed main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i].a);
		a[i].xb=i;
	}
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i].b);
		a[i].xb=i;
	}
	
	for(int i=1;i<=n;i++){
		m+=a[i].a;
		if(a[i].b<=m){
			vis[i]=1;
			q.push(a[i]);
			ans++;
			m-=a[i].b;
		}
		else if(!q.empty()&&a[i].b<q.top().b){
			vis[a[i].xb]=0;
			vis[i]=1;
			m+=q.top().b-a[i].b;
			q.pop();
			q.push(a[i]);
		}
	}
	printf("%lld\n",ans);
	for(int i=1;i<=n;i++){
		if(vis[i]) printf("%lld ",i);
	}
	return 0;
} 
2023/8/14 14:27
加载中...