样例不过,求助
查看原帖
样例不过,求助
722468
MrJC_Pandingding楼主2023/5/14 10:24
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5;
struct node
{
	int v,w;
}stn[maxn+10];
struct nodeb
{
	int lt,rt;
}qj[maxn+10];
int i,lt,m,md,n,rt;
long long f[maxn+10],g[maxn+10],s;
long long chk(int x)
{
	int i;
	long long sumn=0;
	for(i=1;i<=n;++i)
	{
		f[i]=f[i-1]+(stn[i].w>=x);
		g[i]=g[i-1]+(stn[i].w>=x)*stn[i].v;
	}
	for(i=1;i<=m;++i)
		sumn+=(f[qj[i].rt]-f[qj[i].lt-1])*(g[qj[i].rt]-g[qj[i].lt-1]);
	return sumn;
}
int main()
{
	scanf("%d%d%lld",&n,&m,&s);
	for(i=1;i<=n;++i)
		scanf("%d%d",&stn[i].w,&stn[i].v);
	for(i=1;i<=m;++i)
		scanf("%d%d",&qj[i].lt,&qj[i].rt);
	while(lt<=rt)
	{
		md=lt+rt>>1;
		if(chk(md)<s)
			rt=md-1;
		else lt=md+1;
	}
	printf("%lld",min(abs(chk(lt)-s),abs(chk(lt-1)-s)));
	return 0;
}

悬赏关注

2023/5/14 10:24
加载中...