Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Просто решаю.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- //KiruxaLight
- #define _CRT_SECURE_NO_WARNINGS
- #define _USE_MATH_DEFINES
- #include <iostream>
- #include <vector>
- #include <string>
- #include <set>
- #include <map>
- #include <algorithm>
- #include <utility>
- #include <cmath>
- #include <iomanip>
- #include <stack>
- #include <deque>
- #include <queue>
- #include <cstdio>
- #include <unordered_map>
- #include <unordered_set>
- #include <numeric>
- #include <cassert>
- using namespace std;
- #define int long long
- #define all(a) a.begin(), a.end()
- #define rall(a) a.rbegin(), a.rend()
- const int INF = 1e9 + 123, MAXN = 2e5 + 47, MEGAINF = 1e18;
- int p = 41;
- template <class T>
- istream& operator >> (istream& in, vector <T>& a)
- {
- for (auto& i : a)
- in >> i;
- return in;
- }
- template <class T>
- ostream& operator << (ostream& out, vector <T>& a)
- {
- for (auto& i : a)
- out << i << " ";
- return out;
- }
- template <class T, class U>
- istream& operator >> (istream& in, vector <pair <T, U>>& a)
- {
- for (auto& i : a)
- in >> i.first >> i.second;
- return in;
- }
- template <class T, class U>
- ostream& operator << (ostream& out, vector <pair <T, U>>& a)
- {
- for (auto& i : a)
- out << i.first << " " << i.second << endl;
- return out;
- }
- struct node
- {
- int l, r, mn, add, mx;
- node()
- {
- l = r = -1;
- mn = INF;
- add = 0;
- mx = -INF;
- }
- };
- node t[MAXN * 4];
- vector <int> a(MAXN * 4);
- void push(int v)
- {
- if (t[v].add != 0)
- {
- t[v].mn += t[v].add;
- t[v].mx += t[v].add;
- if (t[v].l != t[v].r)
- {
- t[v * 2].add = t[v].add;
- t[v * 2 + 1].add = t[v].add;
- }
- t[v].add = 0;
- }
- }
- void build(int l = 0, int r = MAXN - 1, int v = 1)
- {
- t[v].l = l;
- t[v].r = r;
- if (l == r)
- t[v].mn = a[l], t[v].mx = a[l];
- else
- {
- int mid = l + r >> 1;
- build(l, mid, v * 2);
- build(mid + 1, r, v * 2 + 1);
- t[v].mn = min(t[v * 2].mn, t[v * 2 + 1].mn);
- t[v].mx = max(t[v * 2].mx, t[v * 2 + 1].mx);
- }
- }
- void update(int l, int r, int val, int v = 1)
- {
- push(v);
- if (r < t[v].l || t[v].r < l)
- return;
- if (t[v].l >= l && t[v].r <= r)
- {
- t[v].add += val;
- push(v);
- return;
- }
- update(l, r, val, v * 2);
- update(l, r, val, v * 2 + 1);
- t[v].mn = min(t[v * 2].mn, t[v * 2 + 1].mn);
- t[v].mx = max(t[v * 2].mx, t[v * 2 + 1].mx);
- }
- int get_min(int l, int r, int v = 1)
- {
- push(v);
- if (t[v].l > r || t[v].r < l)
- return INF;
- if (t[v].r <= r && t[v].l >= l)
- return t[v].mn;
- return min(get_min(l, r, v * 2), get_min(l, r, v * 2 + 1));
- }
- int get_max(int l, int r, int v = 1)
- {
- push(v);
- if (t[v].l > r || t[v].r < l)
- return -INF;
- if (t[v].r <= r && t[v].l >= l)
- return t[v].mx;
- return max(get_max(l, r, v * 2), get_max(l, r, v * 2 + 1));
- }
- signed main()
- {
- setlocale(LC_ALL, "rus");
- /*freopen(".in", "r", stdin);
- freopen(".out", "w", stdout);*/
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- cout.tie(NULL);
- int n, k, m;
- cin >> n >> k >> m;
- a.assign(MAXN, k);
- build();
- while (m--)
- {
- int l, r;
- cin >> l >> r;
- --r;
- int mn = get_min(l, r);
- if (mn <= 0)
- cout << "0\n";
- else
- cout << "1\n", update(l, r, -1);
- }
- }
- // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
- // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
- // Советы по началу работы
- // 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
- // 2. В окне Team Explorer можно подключиться к системе управления версиями.
- // 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
- // 4. В окне "Список ошибок" можно просматривать ошибки.
- // 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
- // 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement