제출 #1358938

#제출 시각아이디문제언어결과실행 시간메모리
1358938po_rag526Matryoshka (JOI16_matryoshka)C++20
51 / 100
2094 ms10480 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define F first 
#define S second
#define pb push_back
#define ins insert
#define pf push_front
#define lb lower_bound
#define ub upper_bound
#define yes cout << "YES" << endl
#define no cout << "NO" << endl
#define srt(p) sort(p.begin() , p.end())
#define rvr(p) reverse(p.begin() , p.end())
#define all(p) p.begin() , p.end()
//#pragma GCC optimize("Ofast , unroll-loops")
//#pragma GCC target("avx2")
const int INF = 1e18 , MOD = 1e9 + 7 , MAX = 2e6 + 5;
int dx[8] = {-1 , -1 , -1 , 0 , 0 , 1 , 1 , 1};
int dy[8] = {-1 , 0 , 1 , -1 , 1 , -1 , 0 , 1};

bool is_prime(int n) {
	if(n == 1 or n == 0) return false;
	if(n == 2) return true;
	if(n % 2 == 0) return false;
	for(int i = 3; i <= sqrt(n); i += 2) {
		if(n % i == 0) return false;
	}
	return true;
}

struct Edge {
    int u , v , w;
};

void solve(){
    int n , q;
    cin >> n >> q;
    vector<pair<int , int>> vt;
    for(int i = 0; i < n; ++ i) {
        int a, b; cin >> a >> b;
        vt.pb({a, -b});
    }
    srt(vt);
    while(q--) {
        int A , B;
        cin >> A >> B;
        vector<pair<int , int>> doll;
        for(int i = 0; i < n; ++ i) {
            if(vt[i].F >= A && -vt[i].S <= B) {
                doll.pb({vt[i].F , -vt[i].S});
            }
        }
        if(doll.size() == 1 || doll.size() == 0) {
            cout << doll.size() << endl;
            continue;
        }
        multiset<int> st;
        for(int i = 0; i < doll.size(); ++ i) {
            if(i == 0) {
                st.ins(doll[i].S);
                continue;
            }
            else {
                auto it = st.lower_bound(doll[i].S);
                if(it == st.begin()) {
                    st.ins(doll[i].S);
                    continue;
                }
                it--;
                st.erase(it);
            }
            st.ins(doll[i].S);
        }
        cout << st.size() << endl;
    }
} 

signed main() {
    // freopen("input.txt","r",stdin);
    // freopen("output.txt","w",stdout);
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    //cout.tie(nullptr);
    int t = 1;
    //cin >> t;
    while(t--) {
        solve();
    }
    // cerr << endl << "Time elapsed: " << clock() * 1000.0 / CLOCKS_PER_SEC << " ms" << endl;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…