CSP第25次 202203-2 出行计划 C/C++满分答案
CSP第25次 202203-2 出行计划 C/C++满分答案
下方是100分代码,差分数组
#include <bits/stdc++.h> using namespace std; int can[200010]={ 0};//某时间做核酸能满足的出行计划数量 int ans[200010]={ 0}; int chaxun[100010]={ 0}; int main() { int n,m,k,i,j; cin>>n>>m>>k; for(i=0;i<n;i++) { int clock,need; scanf("%d %d",&clock,&need); if(clock-k>0) { int l=clock-k-need+1; int r=clock-k+1; can[max(l,0)]++; can[r]--; } } ans[0] = can[0]; for(i=1;i<=200010;i++) ans[i] = ans[i-1] + can[i]; for(i=0;i<m;i++) scanf("%d",&chaxun[i]); for(i=0;i<m;i++) printf("%d ",ans[chaxun[i]]); return 0; }
下方是100分代码,普通记录数组
#include <bits/stdc++.h> using namespace std; int can[200010]={ 0};//某时间做核酸能满足的出行计划数量 int chaxun[200010]={ 0}; int main() { int n,m,k,i,j; cin>>n>>m>>k; for(i=0;i<n;i++) { int clock,need; scanf("%d %d",&clock,&need); if(clock-k>0) for(j=clock-k;j>=0 && j>clock-k-need;j--) can[j]++; } for(i=0;i<m;i++) scanf("%d",&chaxun[i]); for(i=0;i<m;i++) printf("%d ",can[chaxun[i]]); return 0; }