旦旦的农场打卡计划
描述
农场主约翰有 N 个农场(编号 1~N),每个农场 i 会在时间 cᵢ 关闭。
小鳄鱼旦旦是个喜欢探险的小家伙,她每天睡醒的时间是 S,然后计划访问一些农场:
到达农场 i 的时间是 tᵢ + S(tᵢ 是固定路程时间)
必须严格在农场关闭前到达(即 tᵢ + S < cᵢ)才能成功打卡
现在旦旦有 Q 个问题,每个问题给出:
S(起床时间)
V(想至少打卡的农场数量)
请你帮旦旦判断,她能否完成目标!
不需要真正前往牧场,只需要判断时间允许的农场个数是否满足要求即可
输入描述
第1行:N、Q(1 ≤ N ≤ 2×10⁵,1 ≤ Q ≤ 2×10⁵)
第2行:c₁ c₂ … c_N(1 ≤ cᵢ ≤ 10⁶)
第3行:t₁ t₂ … t_N(1 ≤ tᵢ ≤ 10⁶)
接下来Q行:每行 V、S
(至少要打卡 V 个农场,起床时间是 S,1 ≤ S ≤ 10⁶,1 ≤ V ≤ N)
输出描述
对每个问题,输出 YES 或 NO。
比较的简单,只需将到达每个农场需要的最晚起床时间按从晚到早排序,若第v晚的也能到,则能完成打卡。
#include<bits/stdc++.h>
using namespace std;
int n,q,c[200010],t[200010],k[200010],v,s;
bool cmp(int a,int b){return a>b;
}
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>q;for(int i=1;i<=n;i++){cin>>c[i];}for(int i=1;i<=n;i++){cin>>t[i];k[i]=c[i]-t[i];//看到达第v个农场最晚要几点起}sort(k+1,k+n+1,cmp);while(q--){cin>>v>>s;if(s<k[v])cout<<"YES"<<endl;else cout<<"NO"<<endl;}
}