제출 #1146296

#제출 시각아이디문제언어결과실행 시간메모리
1146296monostackInspections (NOI23_inspections)C++20
0 / 100
0 ms584 KiB
#include<bits/stdc++.h> using namespace std; #define int long long int32_t main(){ int n,m,q; cin>>n>>m>>q; vector<pair<int,int>> in(m); vector<int> queries(q); bool c3 = true; int sz = 0; vector<int> szi(m); for(int i = 0; i < m; i++){ int a,b; cin>>a>>b; sz += b-a+1; in[i] = {a-1,b-1}; szi[i] = b-a+1; if(a != 1) c3 = false; } for(int i = 0; i < q; i++){ int s; cin>>s; queries[i] = s; } if(c3){ vector<int> non_with_exactly_i_dis(n,0); for(int i = 0; i < m-1; i++){ non_with_exactly_i_dis[szi[i]-1] += min(szi[i], szi[i+1]); } vector<int> suf(n+1,0); for(int i = n; i > 0; i--) suf[i-1] = suf[i] + non_with_exactly_i_dis[i-1]; for(int i = 0; i < q; i++){ if(queries[i] >= n){ cout<<0<<'\n'; continue; }else{ cout<<suf[queries[i]]<<'\n'; } } }else{ vector<int> sbs(sz,0); vector<int> hai(n,-1); int p = -1; for(int i = 0; i < m; i++){ for(int cur = in[i].first; cur <= in[i].second; cur++){ ++p; if(hai[cur] == -1){ hai[cur] = p; }else{ sbs[p - hai[cur] - 1]++; hai[cur] = p; } } } vector<int> suf_sbs(sz+1,0); for(int i = sz; i > 0; i--) suf_sbs[i-1] = suf_sbs[i] + sbs[i-1]; for(int i = 0; i < q; i++){ if(queries[i] >= suf_sbs.size()){ cout<<0<<'\n'; continue; } cout<<suf_sbs[queries[i]]<<'\n'; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...