#include #include #include using namespace std; const int MAXX = 1000001; // Максимална координата static int cnt[MAXX] = {0}; // Броим колко интервала минават през всяка точка static int valid[MAXX] = {0}; // Броим точките, които са покрити >= K пъти void fastIO() { ios::sync_with_stdio(false); cin.tie(0); } int main() { fastIO(); #ifdef ONLINE_JUDGE freopen("trip.in", "r", stdin); freopen("trip.out", "w", stdout); #endif int N, Q, K; cin >> N >> Q >> K; // 1. Обработваме жп линиите чрез разлика на масиви for (int i = 0; i < N; i++) { int l, r; cin >> l >> r; cnt[l]++; if (r + 1 < MAXX) cnt[r + 1]--; // За да премахнем влиянието след r } // 2. Пресмятаме броя жп линии във всяка точка int active = 0; for (int i = 1; i < MAXX; i++) { active += cnt[i]; // Колко жп линии покриват точка i valid[i] = valid[i - 1] + (active >= K ? 1 : 0); // Префиксна сума } // 3. Отговаряме на заявките for (int i = 0; i < Q; i++) { int p, q; cin >> p >> q; cout << valid[q] - valid[p - 1] << "\n"; // Броим точки с поне K покрития } return 0; }