이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define pb push_back
#define ff first
#define ss second
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define int long long
#define ordst tree<int, null_type, less_equal<int>, rb_tree_tag , tree_order_statistics_node_update >
template <class F, class _S>
bool chmin(F &u, const _S &v){
bool flag = false;
if ( u > v ){
u = v; flag |= true;
}
return flag;
}
template <class F, class _S>
bool chmax(F &u, const _S &v){
bool flag = false;
if ( u < v ){
u = v; flag |= true;
}
return flag;
}
//const int N = (1<<18) +1, inf = LLONG_MAX;
//int mod = 998244353;
//int mod = 1000000007;
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//#define rnd(l, r) uniform_int_distribution <int> (l, r)(rng)
void solve(){
int n, q;
cin >> n >> q;
vector<array<int,2>> v(n);
for(auto &[i, j]:v)cin >> i >> j;
sort(rall(v));
vector<array<int,4>> qu(q);
int it = 0;
for(auto &[i, j, k, l]:qu)cin >> i >> j >> k, l = it++;
sort(rall(qu));
ordst st;
vector<int> ans(q);
it = 0;
for(int i = 0; i < q; i++){
auto &[a, b, c, id] = qu[i];
while(it < n && v[it][0] >= a){
st.insert(v[it][1]);
it++;
}
if(st.empty())continue;
int l = st.order_of_key(b);
if(*st.find_by_order(l) >= b)l--;
ans[id] = st.size() - l - 1;
}
for(int i:ans)cout << i << '\n';
}
signed main(){
ios_base::sync_with_stdio(NULL);
cin.tie(NULL);cout.tie(NULL);
int t = 1;
cin >> t;
while(t--)
solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |