제출 #1316832

#제출 시각아이디문제언어결과실행 시간메모리
1316832vaishakhvInspections (NOI23_inspections)C++20
55 / 100
2093 ms13940 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); unordered_map<ll, ll> freq; freq.reserve(1 << 20); freq.max_load_factor(0.7f); 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; freq[g]++; } } } vector<ll> s(q); for (ll i = 0; i < q; i++) { cin >> s[i]; } vector<pair<ll,ll>> gaps; gaps.reserve(freq.size()); for (auto &p : freq) { gaps.push_back(p); } sort(gaps.begin(), gaps.end()); 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 << ' '; } cout << '\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...