Submission #1360850

#TimeUsernameProblemLanguageResultExecution timeMemory
1360850vjudge1Matryoshka (JOI16_matryoshka)C++20
51 / 100
2096 ms5480 KiB
// TEMPLATE
#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
#define ordered_set_char tree<char, null_type, less<char>, rb_tree_tag, tree_order_statistics_node_update>
#define ordered_set_string tree<string, null_type, less<string>, rb_tree_tag, tree_order_statistics_node_update>
#define ordered_multiset tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update>
#define ordered_multiset_char tree<char, null_type, less_equal<char>, rb_tree_tag, tree_order_statistics_node_update>
#define ordered_multiset_string tree<string, null_type, less_equal<string>, rb_tree_tag, tree_order_statistics_node_update>
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
// #define int long long
#define ldouble long double
#define ll unsigned long long
// #define int int_fast32_t
#define endl '\n'
#define pii pair<int, int>
#define F first
#define S second
void solve()
{
    int n, q;
    cin >> n >> q;
    vector<pii> vt;
    for(int i = 0; i < n; i++){
        int x, y;
        cin >> x >> y;
        vt.push_back({x, -y});
    }
    sort(vt.begin(), vt.end());
    while(q--){
        int a, b;
        cin >> a >> b;
        vector<pii> vt1;
        for(int i = 0; i < n; i++){
            if(vt[i].F >= a && -vt[i].S <= b){
                vt1.push_back({vt[i].F, vt[i].S});
            }
        }
        if(vt1.size() == 0){
            cout << 0 << endl;
            continue;
        }
        if(vt1.size() == 1){
            cout << 1 << endl;
            continue;
        }
            multiset<int> mt;
            mt.insert(-vt1[0].S);
            int n1 = vt1.size();
            for(int i = 1; i < n1; i++){
                auto it = mt.lower_bound(-vt1[i].S);
                if(it != mt.begin()){
                    it--;
                    mt.erase(it);
                }
                mt.insert(-vt1[i].S);
            }
            cout << mt.size() << endl;
        
    }
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int T = 1;
    // cin >> T;
    while (T--)
        solve();
    //cerr << "\nTime elapsed: " << clock() * 1000.0 / CLOCKS_PER_SEC << " ms\n";

}
// i am heyder krutoy :moai
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...