Hf_Poem @ 2022-07-22 16:40:09
#include <bits/stdc++.h>
using namespace std;
int n;
struct s
{
int high,power;
};
s a[10000];
s b[10000];
int pcmp(s a,s b)
{
if(a.power!=b.power)
return a.power<b.power;
}
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
int n,s,y,z,cnt=0;
cin>>n>>s>>y>>z;
int h=y+z;
for(int i=1;i<=n;i++)
{
cin>>a[i].high;
cin>>a[i].power;
}
for(int i=1;i<=n;i++)
{
if(a[i].high>h)
continue;
else
{
cnt++;
b[cnt]=a[i];
}
}
sort(b+1,b+cnt+1,pcmp);
int sum=0,cntx=0;
for(int i=1;i<=cnt;i++)
{
if(sum+b[i].power<=s)
{
cntx++;
sum+=b[i].power;
}
}
cout<<cntx;
return 0;
}
最后一个样例总是RE,大佬帮忙看看QAQ
by ShwStone @ 2022-07-22 16:53:17
int pcmp(s a,s b)
{
if(a.power!=b.power)
return a.power<b.power;
}
这里如果 a.power==b.power
返回值就未定义了。把 if
那一行去掉就好了
by Hf_Poem @ 2022-07-22 16:56:36
@ShwStone 谢大佬,过了ヾ(o・ω・)ノ