#include <bits/stdc++.h>
using namespace std;
#define name "IO"
#define int long long
const int inf = 1e18 + 7;
const int maxn = 5e5 + 5;
int n, m, q;
struct segTree
{
vector<int> st, lazy;
segTree(int n)
{
st.resize(4 * n + 5, 0);
lazy.resize(4 * n + 5, 0);
}
void clear()
{
fill(st.begin(), st.end(), 0);
fill(lazy.begin(), lazy.end(), 0);
}
void down(int id, int l, int r)
{
if(!lazy[id]) return;
st[id] += lazy[id];
if(l != r)
{
lazy[id * 2] += lazy[id];
lazy[id * 2 + 1] += lazy[id];
}
lazy[id] = 0;
}
void update(int id, int l, int r, int u, int v, int val)
{
down(id, l, r);
if(l > v || r < u) return;
if(l >= u && r <= v)
{
lazy[id] += val;
down(id, l, r);
return;
}
int m = l + r >> 1;
update(id * 2, l, m, u, v, val);
update(id * 2 + 1, m + 1, r, u, v, val);
st[id] = min(st[id * 2], st[id * 2 + 1]);
}
int get(int id, int l, int r, int u, int v)
{
down(id, l, r);
if(l > v || r < u) return inf;
if(l >= u && r <= v) return st[id];
int m = l + r >> 1;
return min(get(id * 2, l, m, u, v), get(id * 2 + 1, m + 1, r, u, v));
}
};
bool check(int u, int v, int l, int r)
{
if(u < l || u > r) return 0;
if(v < l || v > r) return 0;
return 1;
}
void solve()
{
cin >> n >> m >> q;
vector<pair<int,int>> curtain;
for(int i = 1; i <= m; i++)
{
int l, r;
cin >> l >> r;
curtain.push_back({l, r});
}
segTree st(n);
for(int i = 1; i <= q; i++)
{
st.clear();
int l, r;
cin >> l >> r;
for(auto [left, right] : curtain)
{
if(check(left, right, l, r)) st.update(1, 1, n, left, right, 1);
}
if(st.get(1, 1, n, l, r) > 0) cout << "YES\n";
else cout << "NO\n";
}
}
signed main()
{
if (fopen (name".INP", "r"))
{
freopen (name".INP", "r", stdin);
freopen (name".OUT", "w", stdout);
}
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
clock_t start = clock();
int t = 1;
while(t--) solve();
std::cerr << "Time: " << clock() - start << "ms\n";
return 0;
}
Compilation message (stderr)
curtains.cpp: In function 'int main()':
curtains.cpp:109:17: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
109 | freopen (name".INP", "r", stdin);
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
curtains.cpp:110:17: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
110 | freopen (name".OUT", "w", stdout);
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |