Submission #1276274

#TimeUsernameProblemLanguageResultExecution timeMemory
1276274quanaskingerMatryoshka (JOI16_matryoshka)C++17
26 / 100
1 ms576 KiB
#include<bits/stdc++.h>
using namespace std;
long long n, q;
vector <long long> v[2105];
pair<long long, long long> e[2105];
bool check[2105], conceived[2105];
pair<long long, long long> arr[2105];
long long x, y, w;
bool cmp(long long x, long long y) {
	return arr[x].first < arr[y].first;
}
void dfs(long long x)
{
	check[x] = 1;
    for (long long i = 0; i < v[x].size(); i++)
    {
        if (!check[v[x][i]] && conceived[v[x][i]])
        {
            check[v[x][i]] = true;
            dfs(v[x][i]);
            break;
        }
    }
}
int main() {
	cin >> n >> q;
	for (long long i = 1; i <= n; i++) cin >> arr[i].first >> arr[i].second;
	for (long long i = 1; i <= n; i++) {
		for (long long j = 1; j <= n; j++) {
			if (arr[i].first < arr[j].first && arr[i].second < arr[j].second) {
				v[i].push_back(j);
			}
		}
	}
	for (long long i = 1; i <= n; i++) {
		sort(v[i].begin(), v[i].end(), cmp);
	}
	while (q--) {
		cin >> x >> y;
		memset(check, 0, sizeof(check));
		memset(conceived, 0, sizeof(conceived));
		vector <long long> cor;
		for (long long i = 1; i <= n; i++) {
			if (arr[i].first >= x && arr[i].second <= y) {
				conceived[i] = 1;
				cor.push_back(i);
			}
		}
		w = 0;
		sort(cor.begin(), cor.end(), cmp);
		for (auto x: cor) {
			if (!check[x]) {
				w++;
				dfs(x);
			}
		}
		cout << w << "\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...