Submission #808806

#TimeUsernameProblemLanguageResultExecution timeMemory
808806LucaIlieExamination (JOI19_examination)C++17
0 / 100
2894 ms162632 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> using namespace __gnu_pbds; using namespace std; struct query { int a, b, c; }; const int MAX_N = 1e5; const int MAX_Q = 1e5; const int MAX_VAL = 2e9; int s[MAX_N], t[MAX_N], a[MAX_Q], b[MAX_Q], c[MAX_Q], ans[MAX_Q]; map<int, vector<int>> updates, queries; vector<int> vals; struct SEG_TREE { unordered_map<long long , ordered_set> segTree; void update( long long v, int l, int r, int pos, int val ) { if ( l > pos || r < pos ) return; segTree[v].insert( val ); int mid = (r - l) / 2 + l; if ( l == r ) return; update( v * 2 + 1, l, mid, pos, val ); update( v * 2 + 2, mid + 1, r, pos, val ); } int query( long long v, int l, int r, int lq, int rq, int val ) { if ( l > rq || r < lq ) return 0; if ( lq <= l && r <= rq ) return segTree[v].size() - segTree[v].order_of_key( val ); int mid = (r - l) / 2 + l; return query( v * 2 + 1, l, mid, lq, rq, val ) + query( v * 2 + 2, mid + 1, r, lq, rq, val ); } }; SEG_TREE bambam; int main() { int n, q; cin >> n >> q; for ( int i = 0; i < n; i++ ) cin >> s[i] >> t[i]; for ( int i = 0; i < q; i++ ) cin >> a[i] >> b[i] >> c[i]; for ( int i = 0; i < n; i++ ) updates[s[i] + t[i]].push_back( i ), vals.push_back( s[i] + t[i] ); for ( int i = 0; i < q; i++ ) queries[c[i]].push_back( i ), vals.push_back( c[i] ); sort( vals.begin(), vals.end() ); vals.resize( unique( vals.begin(), vals.end() ) - vals.begin() ); reverse( vals.begin(), vals.end() ); for ( int x: vals ) { for ( int i: updates[x] ) bambam.update( 0, 0, MAX_VAL, s[i], t[i] ); for ( int i: queries[x] ) ans[i] = bambam.query( 0, 0, MAX_VAL, a[i], MAX_VAL, b[i] ); } for ( int i = 0; i < q; i++ ) cout << ans[i] << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...