注意到题目并没有t的范围喵,所以不开longlong查了半天都没发现问题喵,最后开longlong交了一发才过了喵

然后嘛,这道题不难看出根据题目的条件并没有说求出最大的题数,所以O(n)遍历就过去了喵

只要在每个地方判断当前的时间够不够做这道题,难度如何就好了喵,不难

但是说如果要求是按照题目顺序做的最大题数的话,把n的范围给小一点就是01背包的题了吧,大概喵

clcle的最大题数肯定是01背包喵

至于rqy我不太会喵

但是这里的地方太小,我写不下

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef __int128 i128;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int MOD = 998244353;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const int N = 1e6 + 10;
#define int long long

void solve()
{	
    int n,t;
    cin>>n>>t;
    int a,b;
    cin>>a>>b;
    vector<int> time(n + 1);
    vector<int> difficulty(n + 1);
    for (int i = 1 ; i <= n ; i++) cin>>time[i];
    for (int i = 1 ; i <= n ; i++) cin>>difficulty[i];
    int t1 = t,t2 = t,cnt1 = 0,cnt2 = 0;
    for (int i = 1 ; i <= n ; i++)
    {
        if (t1 >= time[i] && a > difficulty[i])
        {
            t1 -= time[i];
            cnt1++;
        }
        
        if (t2 >= time[i] && b > difficulty[i])
        {
            t2 -= time[i];
            cnt2++;
        }
        else if (t2 >= 2 * time[i])
        {
            t2 -= 2 * time[i];
            cnt2++;
        }
    }
    cout<<cnt1<<' '<<cnt2<<'\n';
    return;
}
signed main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    int _ = 1;
    //std::cin>>_;
    while (_--)
    {
        solve();
    }
    return 0;
}
/*
  ∧_∧
 (。•́︿•̀。)
 /づ正数与负数
都要开心计算哦
*/