Submission #1276333

#TimeUsernameProblemLanguageResultExecution timeMemory
1276333quanaskingerMatryoshka (JOI16_matryoshka)C++17
51 / 100
2094 ms9836 KiB
#include <bits/stdc++.h>
using namespace std;
int n, q, x, y;
struct point {
	long long l, w, idx;
	bool operator< (const point &a) const {
		return (a.l < l || (a.l == l && a.w > w));
	}
};
vector<vector<int>> cartons;
int main()
{
    cin >> n >> q;
    point arr[n + 5], arr2[n + 5];
    for (int i = 1; i <= n; i++)
    {
        cin >> arr[i].l >> arr[i].w;
        arr[i].idx = i;
        arr2[i] = arr[i];
    }
    sort(arr+1, arr+n+1);
   	while (q--) {
   		vector <long long> cur;
   		cin >> x >> y;
   		cerr << x << " " << y << "\n";
   		for (long long i = 1; i <= n; i++) {
   			if (arr[i].l >= x && arr[i].w <= y) {
   				if (cur.empty() || arr[i].w >= cur.back()) cur.push_back(arr[i].w);
   				else {
   					long long t = upper_bound(cur.begin(), cur.end(), arr[i].w) - cur.begin();
   					cur[t] = arr[i].w;
   				}
   			}
   		}
   		cout << cur.size() << "\n";
   	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...