Submission #1316830

#TimeUsernameProblemLanguageResultExecution timeMemory
1316830vaishakhvInspections (NOI23_inspections)C++20
29 / 100
2096 ms5436 KiB
// Source: https://usaco.guide/general/io #include <bits/stdc++.h> using namespace std; using ll = long long; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll n, m, q, day = 0; cin >> n >> m >> q; vector<pair<ll,ll>> lr(m); for (ll i = 0; i < m; i++) { cin >> lr[i].first >> lr[i].second; } vector<ll> last(n + 1, -1); vector<pair<ll,ll>> gaps; for (ll i = 0; i < m; i++) { ll li = lr[i].first, ri = lr[i].second; for (ll j = li; j <= ri; j++) { ll prev = last[j]; last[j] = day; day++; if (prev >= 0) { ll g = day - prev - 2; // find g in gaps auto it = lower_bound( gaps.begin(), gaps.end(), make_pair(g, 0LL) ); if (it != gaps.end() && it->first == g) { it->second++; } else { gaps.insert(it, {g, 1}); } } } } vector<ll> s(q); for (ll i = 0; i < q; i++) { cin >> s[i]; } int F = gaps.size(); vector<ll> suffix(F + 1, 0); for (int i = F - 1; i >= 0; i--) { suffix[i] = suffix[i + 1] + gaps[i].second; } for (ll Q = 0; Q < q; Q++) { auto it = lower_bound( gaps.begin(), gaps.end(), make_pair(s[Q], 0LL) ); if (it == gaps.end()) { cout << 0; } else { ll idx = it - gaps.begin(); cout << suffix[idx]; } if (Q + 1 < q) cout << " "; } }
#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...