Submission #386164

#TimeUsernameProblemLanguageResultExecution timeMemory
386164jeroenodbExamination (JOI19_examination)C++14
100 / 100
528 ms19772 KiB
#include "bits/stdc++.h" #include <ext/pb_ds/assoc_container.hpp> // Common file #include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update using namespace std; #define all(x) begin(x),end(x) template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; } template<typename T_container, typename T = typename enable_if<!is_same<T_container, string>::value, typename T_container::value_type>::type> ostream& operator<<(ostream &os, const T_container &v) { for (const T &x : v) os << x << '\n'; return os; } #define debug(a) cerr << "(" << #a << ": " << a << ")\n"; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int,int> pi; const int mxN = 1e5+1, oo = 2e9+2; using namespace __gnu_pbds; typedef tree<int,null_type,less_equal<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_multiset; struct event { int x,y,c,i=-1; bool operator<(const event& o) const { return c > o.c or (c== o.c and i < o.i); } }; struct event2 { int x,y,i=-1; bool operator<(const event2& o) const { return x> o.x or (x==o.x and i<o.i); } }; int main() { int n,q; cin >> n >> q; vector<event> events(n); vector<event2> events2(n); vector<pair<int,int>> points; for(int i=0;i<n;++i) { auto& e = events[i]; cin >> e.x >> e.y; e.c = e.x+e.y; events2[i] = {e.x,e.y,-1}; } vi ans(q); for(int i=0;i<q;++i) { auto& e = events[i]; int a,b,c; cin >> a >> b >> c; if(c < a+b) { events2.push_back({a,b,i}); } else { events.push_back({a,b,c,i}); } } sort(all(events)); ordered_multiset sx,sy; for(auto& e: events) { if(e.i==-1) { // point insertion sx.insert(e.x); sy.insert(e.y); } else { // debug(sx); debug(sy); ans[e.i] -= sx.order_of_key(e.x); ans[e.i] += sy.size()-sy.order_of_key(e.y); } } sort(all(events2)); sy.clear(); for(auto& e: events2) { if(e.i==-1) { sy.insert(e.y); } else { ans[e.i] = sy.size()-sy.order_of_key(e.y); } } cout << ans; }

Compilation message (stderr)

examination.cpp: In function 'int main()':
examination.cpp:43:15: warning: unused variable 'e' [-Wunused-variable]
   43 |         auto& e = events[i];
      |               ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...