제출 #1343051

#제출 시각아이디문제언어결과실행 시간메모리
1343051Jawad_Akbar_JJEvent Hopping (BOI22_events)C++20
0 / 100
1593 ms1624 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
const int N = 1<<17;
int s[N], e[N], Nxt[N][20];

int main(){
	int n, q;
	cin>>n>>q;

	// vector<pair<int, int>> vec;
	for (int i=1;i<=n;i++){
		cin>>s[i]>>e[i];
	// 	vec.push_back({s[i], -i});
	// 	vec.push_back({e[i] + 1, i});
	}

	// sort(begin(vec), end(vec));

	// int mx = 0, ind;
	// for (auto [p, id] : vec){
	// 	// if (id < 0)
	// 	// 	cout<<"Add "<<-id<<' '<<s[-id]<<' '<<e[-id]<<'\n';
	// 	if (id < 0 and mx < e[-id])
	// 		mx = e[-id], ind = -id;
	// 	else if (id > 0)
	// 		Nxt[id][0] = (mx <= e[id] ? id : ind);//, cout<<id<<' '<<ind<<'\n';

	// 	// if (id > 0)
	// 	// 	cout<<"Nxt "<<s[id]<<' '<<e[id]<<' '<<Nxt[id][0]<<'\n';
	// }
	for (int i=1;i<=n;i++){
		Nxt[i][0] = i;
		for (int j=1;j<=n;j++)
			if (s[j] <= e[i] + 1 and e[j] > e[Nxt[i][0]])
				Nxt[i][0] = j;
	}

	// for (int j=0;j<18;j++){
	// 	for (int i=1;i<=n;i++)
	// 		Nxt[i][j+1] = Nxt[Nxt[i][j]][j];
	// }

	for (int i=1;i<=q;i++){
		int S, E, Ans = 0;
		cin>>S>>E;

		while (e[S] + 1 < s[E] and Ans >= 0){
			if (Nxt[S][0] == S)
				Ans = -3;
			S = Nxt[S][0], Ans++;
		}
		if (Ans >= 0 and S == E)
			cout<<Ans<<'\n';
		else if (Ans >= 0)
			cout<<Ans + 1<<'\n';
		else
			cout<<"impossible\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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...