Submission #1225094

#TimeUsernameProblemLanguageResultExecution timeMemory
1225094Double_SlashExamination (JOI19_examination)C++20
100 / 100
269 ms5084 KiB
#include <bits/stdc++.h> using namespace std; #define all(x) x.begin(), x.end() using pint = pair<int, int>; int main() { int n, q; cin >> n >> q; vector<int> cc; pint p[n]; for (auto &[x, y]: p) { cin >> x >> y; cc.emplace_back(y); } sort(all(cc)); cc.erase(unique(all(cc)), cc.end()); auto lb = [&] (int x) { return lower_bound(all(cc), x) - cc.begin(); }; array<int, 4> queries[q]; for (int i = q; i--;) { cin >> queries[i][0] >> queries[i][1] >> queries[i][2]; queries[i][3] = i; } int ans[q]{}; sort(p, p + n); sort(queries, queries + q); struct St { int n; vector<int> st; St(int n) : n(n), st(n << 1) {} void upd(int i) { for (i += n; i; i >>= 1) ++st[i]; } int query(int l, int r) { int ret = 0; for (l += n, r += n; l < r; l >>= 1, r >>= 1) { if (l & 1) ret += st[l++]; if (r & 1) ret += st[--r]; } return ret; } } st{cc.size()}; for (int i = q, j = n; i--;) { auto [a, b, c, idx] = queries[i]; while (j and p[j - 1].first >= a) st.upd(lb(p[--j].second)); ans[idx] = st.query(lb(max(b, c - a)), cc.size()); } sort(p, p + n, [] (auto &a, auto &b) { return a.first + a.second < b.first + b.second; }); sort(queries, queries + q, [] (auto &a, auto &b) { return a[2] < b[2]; }); fill(all(st.st), 0); for (int i = q, j = n; i--;) { auto [a, b, c, idx] = queries[i]; while (j and p[j - 1].first + p[j - 1].second >= c) st.upd(lb(p[--j].second)); ans[idx] += st.query(lb(b), lb(c - a)); } for (int i = q; i--;) cout << ans[i] << endl; }

Compilation message (stderr)

examination.cpp: In function 'int main()':
examination.cpp:45:17: warning: narrowing conversion of 'cc.std::vector<int>::size()' from 'std::vector<int>::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
   45 |     } st{cc.size()};
      |          ~~~~~~~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...