洛谷-P 1478陶陶摘りんご(アップグレード版)

1377 ワード

洛谷-P 1478陶陶摘りんご(アップグレード版)
原題リンク:https://www.luogu.com.cn/problem/P1478
  • タイトル説明
  • 入力フォーマット
  • 出力フォーマット
  • 入出力サンプル
  • 説明/ヒント
  • C++コード
  • タイトルの説明
    また1年の秋、陶器家のリンゴの木はn個の果実を結んだ.陶陶陶はまたりんごを取りに行きました.今度はaセンチの椅子があります.手が届かないときは、椅子に立ってからやってみます.
    今回、NOIp 2005普及組の第1題とは違って、陶陶の前にベンチを運んで、力はsしか残っていない.もちろん、りんごを摘むたびに一定の力を使う.陶陶陶はs<0の前に最大何個のリンゴを摘むことができるか知りたい.
    現在、n個のリンゴが地上に到達する高さ(x_i)、椅子の高さa、陶器の手が伸びる最大長さb、陶器に残った力s、陶器がリンゴを1個摘むのに必要な力(y_i)、陶器が最大でどれだけのリンゴを摘むことができるかを求めていることが知られている.
    入力フォーマット
    1行目:りんごを2つ数えてn、力s.
    2行目:椅子の高さaを2つ数え、陶器の手が伸びる最大長さb.
    3行目~3+n−1行目:1行2個でリンゴの高さ(x_i)、このリンゴを摘むのに必要な力(y_i).
    出力フォーマット
    陶陶が最も多く取れるリンゴの数を表す整数は一つしかない.
    入出力サンプル
    入力#1
    8 15
    20 130
    120 3
    150 2
    110 7
    180 1
    50 8
    200 0
    140 3
    120 2
    

    出力#1
    4
    

    説明/ヒント
    100%のデータに対して、n≦5000、a≦50、b≦200、s≦1000、(x_i)≦280、(y_i)≦100である.
    C++コード
    #include 
    using namespace std;
    
    int main() {
        int n,s,a,b,i,j,ans=0;
        cin>>n>>s>>a>>b;
        int x[n],y[n];
        for(i=0;i>x[i]>>y[i];
        for(i=0;iy[j]) {
                    swap(y[i],y[j]);
                    swap(x[i],x[j]);
                }
        for(i=0;i=y[i]) {
                s-=y[i];
                ++ans;
            }
        cout<