smby_mobei @ 2024-10-09 13:08:00
只有80分,第四个点RE
#include<bits/stdc++.h>
using namespace std;
int main() {
long long n,s,a,b,x[10000],y[10000],num,m,ans=0;
cin>>n>>s>>a>>b;
num=s;
pair<int,int> p[10000];
for(int i=1; i<=n; i++) {
cin>>x[i]>>y[i];
p[i]= {y[i],x[i]};
}
sort(p+1,p+n);
for(int i=1; i<=n; i++) {
if(a+b>=p[i].second && num>=p[i].first) {
ans++;
num=num-p[i].first;
}
}
cout<<ans;
return 0;
}
by litangzheng @ 2024-10-09 13:22:00
@smby_mobei 别把很大的数组开成局内变量,包炸的。
by smby_mobei @ 2024-10-09 13:23:03
@litangzheng 还是80分
by smby_mobei @ 2024-10-09 13:23:30
@litangzheng 并且long long肯定能开10000的
by litangzheng @ 2024-10-09 13:25:42
@smby_mobei 那你sort排二元组肯定要自己写个cmp啊。
by smby_mobei @ 2024-10-09 13:26:43
@litangzheng 咋改求助
by dracu @ 2024-10-09 13:28:09
改一下sort就可以了,后面改成p+n+1
#include<bits/stdc++.h>
using namespace std;
int main() {
long long n,s,a,b,x[10000],y[10000],num,m,ans=0;
cin>>n>>s>>a>>b;
num=s;
pair<int,int> p[10000];
for(int i=1; i<=n; i++) {
cin>>x[i]>>y[i];
p[i]= {y[i],x[i]};
}
sort(p+1,p+n+1);
for(int i=1; i<=n; i++) {
if(a+b>=p[i].second && num>=p[i].first) {
ans++;
num=num-p[i].first;
}
}
cout<<ans;
return 0;
}
帮你试过了AC
by smby_mobei @ 2024-10-09 13:28:38
@dracu 知道了,谢谢指导,可以回关吗
by dracu @ 2024-10-09 13:29:07
@smby_mobei 可以可以,回了
by litangzheng @ 2024-10-09 13:29:20
@smby_mobei 你自己写个cmp啊,不会写就用冒泡,反正
by smby_mobei @ 2024-10-09 13:31:12
@litangzheng sort后面的p+n改成p+n+1就可以了