想请教下各位大佬为什么声明变量先后会使第12个点判断错误
查看原帖
想请教下各位大佬为什么声明变量先后会使第12个点判断错误
61320
素月楼主2021/7/9 20:12
#include<bits/stdc++.h>
using namespace std;
int n,k,b=1,c[300001]={0};
long long ans=0;
struct point{
	int m,v;
}a[300001];



priority_queue<int> s; 
bool cmp(point d,point e)
{
	if(d.m==e.m)
	{
		return d.v<e.v;
	}
	return d.m<e.m;
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].m>>a[i].v;
	}
	for(int i=1;i<=k;i++)
	{
		cin>>c[i];
	}
	sort(c+1,c+k+1);
	sort(a+1,a+n+1,cmp);
	a[n+1].m=2147483647; 
	for(int i=1;i<=n+1;i++)
	{
		while(a[i].m>c[b])
		{
			if(!s.empty())
				ans+=s.top(),s.pop();
			b++;
			if(b>k)
				break;
		}
		if(b>k)
			break;
		s.push(a[i].v);
	}
	cout<<ans;
	return 0;
}

这个代码是ac了的

#include<bits/stdc++.h>
using namespace std;

struct point{
	int m,v;
}a[300001];
int n,k,b=1,c[300001]={0};
long long ans=0;


priority_queue<int> s; 
bool cmp(point d,point e)
{
	if(d.m==e.m)
	{
		return d.v<e.v;
	}
	return d.m<e.m;
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].m>>a[i].v;
	}
	for(int i=1;i<=k;i++)
	{
		cin>>c[i];
	}
	sort(c+1,c+k+1);
	sort(a+1,a+n+1,cmp);
	a[n+1].m=2147483647; 
	for(int i=1;i<=n+1;i++)
	{
		while(a[i].m>c[b])
		{
			if(!s.empty())
				ans+=s.top(),s.pop();
			b++;
			if(b>k)
				break;
		}
		if(b>k)
			break;
		s.push(a[i].v);
	}
	cout<<ans;
	return 0;
}

这个代码是88分第12个点wa了 两个程序区别只有变量在结构体后声明变成了在前面 想请教下变量声明位置也会影响程序吗?

2021/7/9 20:12
加载中...