Submission #1246267

#TimeUsernameProblemLanguageResultExecution timeMemory
1246267trideserEvent Hopping (BOI22_events)C++20
0 / 100
1595 ms1456 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	int N, Q;
	cin >> N >> Q;
	vector<pair<int, int>> events(N);
	for(int i = 0; i < N; i++) {
		int a, b;
		cin >> a >> b;
		events[i] = make_pair(a, b);
	}
	//vector<pair<int, int>> events2 = events;
	//sort(events2.begin(), events2.end());
	vector<int> optimal(N);
	for(int i = 0; i < N; i++) {
		int opt = -1;
		for(int j = 0; j < N; j++) {
			//cout << events[i].first << " - " << events[i].second << " : ";
			//cout << events[j].first << " - " << events[j].second << "\n";
			//cout << (events[j].first < events[i].first) << (events[j].second > events[i].first) << "\n";
			if(events[j].first < events[i].first &&
					events[j].second >= events[i].first &&
					events[j].second <= events[i].second &&
					(opt == -1 || events[j].first < events[opt].first)) {
				//cout << "OPT\n";
				opt = j;
			}
		}

		optimal[i] = opt;
	}
	//vector<pair<int, int>> goodev;
	/*for(pair<int, int> p : events2) {
		while(!goodev.empty() && (goodev.back().first == p.first)) {
			goodev.pop_back();
		}
		if(goodev.empty() || goodev.back().second < p.second)
			goodev.push_back(p);
	}
	for(pair<int, int> p : goodev)
		cout << p.first << " " << p.second << "\n";*/
	/*for(int a : optimal)
		cout << a << " ";
	cout << "\n";*/
	for(int i = 0; i < Q; i++) {
		int a, b;
		cin >> a >> b;
		if(a == b) {
			cout << "0\n";
			continue;
		}
		a--;
		b--;
		if(events[a].second > events[b].first) {
			cout << "impossible\n";
			continue;
		}
		int ret = 0;
		int currentE = b;
		while(currentE != -1 && events[currentE].first > events[a].second) {
			//cout << "\t" << currentE << "\n";
			currentE = optimal[currentE];
			ret++;
		}
		if(currentE == -1)
			cout << "impossible\n";
		else
			cout << ret + 1 << "\n";
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...