Cod sursa(job #3364644)

Utilizator tryharderulbrebenel mihnea stefan tryharderul Data 8 septembrie 2026 14:41:41
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <vector>

using namespace std;

int main() {

	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	const int MAXN = 1e6;
	const int INF = 1e9;
	const int MAXLOG = 23;

	int n, q;
	cin >> n >> q;

	vector<int> end(MAXN + 5);
	for (int i = 1; i <= n; i++) {
		int x, y;
		cin >> x >> y;
		end[x] = min(end[x], y);
	}

	vector<int> nxt(MAXN + 5);
	nxt[MAXN + 1] = INF;
	for (int i = MAXN; i >= 0; i--) {
		nxt[i] = min(nxt[i + 1], end[i]);
	}

	vector<vector<int>> up(MAXN + 5, vector<int>(MAXLOG, 0));
	for (int i = 0; i <= n; i++) {
		up[i][0] = nxt[i];
	}

	while (q--) {
		int l, r, ans = 0;
		cin >> l >> r;
		for (int i = MAXLOG - 1; i >= 0; i--) {
			int next_film = up[l][i];
			if (next_film <= r) {
				ans += (1 << i);
				l = next_film;
			}
		}
		cout << ans << '\n';
	}

	return 0;
}