[USACO24FEB] Maximizing Productivity

image

 

 

ci 表示关闭第 i 个农场的时间,ti 表示到第 i 个农场的初始时间,用 latei 要想在关闭前到达第 i 个农场的最晚时间,此时我们只需要把 late 数组从大到小排序即可,只要看第 v 个是否能按时到达即可。因为数组有序,如果能到达,说明所有比他小的农场都可以到达。

 

 

#include<bits/stdc++.h>
using namespace std; 
int n,q;
int c[200005],t[200005];
int late[200005];
int main(){
	cin >> n >> q;
	for(int i=1;i<=n;i++)
		cin >> c[i];//关闭时间 
		//3 5 7 9 12 
	for(int i=1;i<=n;i++)
		cin >> t[i];//初始访问时间 
		//4 2 3 3 8
	for(int i=1;i<=n;i++)
		late[i] = c[i] - t[i];//最晚到达时间 
		//-1,3,4,6,4 
	sort(late+1,late+1+n);//排序
	reverse(late+1,late+1+n);
	for(int i=1;i<=q;i++)
	{
		int v,s;
		cin >> v >> s;
		if(s < late[v]) 
		   cout << "YES";//表示能够到达 
		else
		     cout << "NO";
		cout << endl;
	} 
	return 0;
}

  

posted @ 2025-09-14 19:43  我微笑不代表我快乐  阅读(4)  评论(0)    收藏  举报