求救为什么RE
查看原帖
求救为什么RE
227950
Willow_Liu楼主2023/8/24 14:15
#include <iostream>
#include <set>
#define int long long

using namespace std;

const int N = 2e5 + 20;

int h[N], p[N];

set<pair<int, int> > q;

signed main()
{
	int T;
	cin >> T;
	while(T -- )
	{
	    q.clear();
		int n, k;
		cin >> n >> k;
		for (int i = 1; i <= n; i ++ )
		{
			cin >> h[i];
		}
		for (int i = 1; i <= n; i ++ )
		{
			cin >> p[i];
		}
		for (int i = 1; i <= n; i ++)
		{
			q.insert(make_pair(p[i], h[i]));
		}
		while(!q.empty())
		{
			for (set<pair<long long, long long> >::iterator i = q.begin(); i != q.end(); i ++ )
			{
				pair<int, int> s = *i;
				int ph = s.second, at = s.first;
				if(ph <= k)
				{
					q.erase(i);
				}
				else
				{
					q.erase(i);
					q.insert(make_pair(at, ph - k));
				}
			}
			if(q.empty())
			{
			    break;
			}
			set<pair<long long, long long> >::iterator i = q.begin();
			pair<int, int> s = *i;
			int ph = s.second, at = s.first;
			k -= at;
			if(k <= 0)
			{
				cout << "NO" << endl;
				break;
			}
		}
		if(k > 0)
		{
			cout << "YES" << endl;
		}
	}
	return 0;
}
2023/8/24 14:15
加载中...