问题标题: 洛谷:P1478 陶陶摘苹果(升级版)

0
0
已解决
陈曦
陈曦
资深天翼
资深天翼

洛谷:P1478 陶陶摘苹果(升级版)

题目传送门

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,a,b,l,cnt;
struct tt{
    int x,y;
}s[55000];
bool cmp(tt a,tt b){
    return a.y<b.y;
}
int main(){
    cin>>n>>l>>a>>b;
    a+=b;
    for(int i=1;i<=n;i++){
        cin>>s[i].x>>s[i].y;
    }
    sort(s+1,s+1+n,cmp);
    int i=0;
    while(l>=0){
        i++;
        if(s[i].x<=a){
            l-=s[i].y;
            cnt++;
        } 
        if(l<0){
            break;
        }
    }
    cout<<cnt;
    return 0;
}

请 找错


0
已采纳
周明轩
周明轩
资深光能
资深光能

你的代码没什么大问题,有几个细节:

while(l>=0)

改成:

while(l>0&&i<n)

并把:

if(s[i].x<=a)

改成:

if(s[i].x<=a&&l>=s[i].y)

就行了。

望采纳

0
我要回答