#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define ll long long
#define ff first
#define ss second
#define N 100000
#define MOD 1000000007
#define INF 0x3f3f3f3f
vector<pair<int, pair<int, int> > > ar;
vector<pair<pair<int, int>, pair<int, int> > > qu;
map<int, int> scmp, tcmp;
int ss, ts;
struct Y {
int val = 0;
Y *l = NULL, *r = NULL;
int query(int L, int R, int y){
if(R <= y)
return val;
if(L > y)
return 0;
int m = (L + R) >> 1;
int w = 0;
if(l)
w += l -> query(L, m, y);
if(r && m < y)
w += r -> query(m + 1, R, y);
return w;
}
void update(int L, int R, int y){
++val;
if(L == R)
return;
int m = (L + R) >> 1;
if(m >= y){
if(!l)
l = new Y();
l -> update(L, m, y);
} else {
if(!r)
r = new Y();
r -> update(m + 1, R, y);
}
}
};
struct X {
Y *val = new Y();
X *l = NULL, *r = NULL;
int query(int L, int R, int x, int y){
if(R <= x)
return val -> query(1, ts, y);
if(L > x)
return 0;
int m = (L + R) >> 1;
int w = 0;
if(l)
w += l -> query(L, m, x, y);
if(r && m < x)
w += r -> query(m + 1, R, x, y);
return w;
}
void update(int L, int R, int x, int y){
val -> update(1, ts, y);
if(L == R) return;
int m = (L + R) >> 1;
if(m >= x){
if(!l)
l = new X();
l -> update(L, m, x, y);
} else {
if(!r)
r = new X();
r -> update(m + 1, R, x, y);
}
}
} *seg = new X();
int ans[N];
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, q;
cin>>n>>q;
int mxs = 0, mxt = 0;
for(int i = 1; i <= n; ++i){
int s, t;
cin>>s>>t;
mxs = max(mxs, s);
mxt = max(mxt, t);
ar.push_back({s + t, {s, t}});
scmp[s] = 0;
tcmp[t] = 0;
}
int w;
w = 0;
for(auto& x : scmp)
x.ss = ++w;
w = 0;
for(auto& x : tcmp)
x.ss = ++w;
ss = scmp.size();
ts = tcmp.size();
for(auto& x : ar){
x.ss.ff = ss + 1 - scmp[x.ss.ff];
x.ss.ss = ts + 1 - tcmp[x.ss.ss];
}
sort(ar.rbegin(), ar.rend());
for(int i = 1; i <= q; ++i){
int a, b, c;
cin>>a>>b>>c;
if(a > mxs || b > mxt)
continue;
a = scmp.lower_bound(a) -> ss;
b = tcmp.lower_bound(b) -> ss;
a = ss + 1 - a;
b = ts + 1 - b;
qu.push_back({{c, i}, {a, b}});
}
sort(qu.rbegin(), qu.rend());
w = 0;
for(auto& x : qu){
while(w != n && ar[w].ff >= x.ff.ff){
seg -> update(1, ss, ar[w].ss.ff, ar[w].ss.ss);
++w;
}
ans[x.ff.ss] = seg -> query(1, ss, x.ss.ff, x.ss.ss);
}
for(int i = 1; i <= q; ++i)
cout<<ans[i]<<'\n';
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
376 KB |
Output is correct |
2 |
Correct |
5 ms |
376 KB |
Output is correct |
3 |
Correct |
5 ms |
252 KB |
Output is correct |
4 |
Correct |
5 ms |
376 KB |
Output is correct |
5 |
Correct |
5 ms |
376 KB |
Output is correct |
6 |
Correct |
5 ms |
376 KB |
Output is correct |
7 |
Correct |
27 ms |
9336 KB |
Output is correct |
8 |
Correct |
27 ms |
9336 KB |
Output is correct |
9 |
Correct |
27 ms |
9336 KB |
Output is correct |
10 |
Correct |
12 ms |
2296 KB |
Output is correct |
11 |
Correct |
13 ms |
2040 KB |
Output is correct |
12 |
Correct |
7 ms |
504 KB |
Output is correct |
13 |
Correct |
27 ms |
9464 KB |
Output is correct |
14 |
Correct |
28 ms |
9464 KB |
Output is correct |
15 |
Correct |
27 ms |
9464 KB |
Output is correct |
16 |
Correct |
9 ms |
760 KB |
Output is correct |
17 |
Correct |
9 ms |
888 KB |
Output is correct |
18 |
Correct |
6 ms |
504 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1987 ms |
466732 KB |
Output is correct |
2 |
Correct |
2029 ms |
466544 KB |
Output is correct |
3 |
Correct |
2005 ms |
466936 KB |
Output is correct |
4 |
Correct |
316 ms |
47784 KB |
Output is correct |
5 |
Correct |
315 ms |
43808 KB |
Output is correct |
6 |
Correct |
82 ms |
5088 KB |
Output is correct |
7 |
Correct |
1940 ms |
466472 KB |
Output is correct |
8 |
Correct |
1925 ms |
466804 KB |
Output is correct |
9 |
Correct |
1728 ms |
466624 KB |
Output is correct |
10 |
Incorrect |
147 ms |
10024 KB |
Output isn't correct |
11 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1987 ms |
466732 KB |
Output is correct |
2 |
Correct |
2029 ms |
466544 KB |
Output is correct |
3 |
Correct |
2005 ms |
466936 KB |
Output is correct |
4 |
Correct |
316 ms |
47784 KB |
Output is correct |
5 |
Correct |
315 ms |
43808 KB |
Output is correct |
6 |
Correct |
82 ms |
5088 KB |
Output is correct |
7 |
Correct |
1940 ms |
466472 KB |
Output is correct |
8 |
Correct |
1925 ms |
466804 KB |
Output is correct |
9 |
Correct |
1728 ms |
466624 KB |
Output is correct |
10 |
Incorrect |
147 ms |
10024 KB |
Output isn't correct |
11 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
376 KB |
Output is correct |
2 |
Correct |
5 ms |
376 KB |
Output is correct |
3 |
Correct |
5 ms |
252 KB |
Output is correct |
4 |
Correct |
5 ms |
376 KB |
Output is correct |
5 |
Correct |
5 ms |
376 KB |
Output is correct |
6 |
Correct |
5 ms |
376 KB |
Output is correct |
7 |
Correct |
27 ms |
9336 KB |
Output is correct |
8 |
Correct |
27 ms |
9336 KB |
Output is correct |
9 |
Correct |
27 ms |
9336 KB |
Output is correct |
10 |
Correct |
12 ms |
2296 KB |
Output is correct |
11 |
Correct |
13 ms |
2040 KB |
Output is correct |
12 |
Correct |
7 ms |
504 KB |
Output is correct |
13 |
Correct |
27 ms |
9464 KB |
Output is correct |
14 |
Correct |
28 ms |
9464 KB |
Output is correct |
15 |
Correct |
27 ms |
9464 KB |
Output is correct |
16 |
Correct |
9 ms |
760 KB |
Output is correct |
17 |
Correct |
9 ms |
888 KB |
Output is correct |
18 |
Correct |
6 ms |
504 KB |
Output is correct |
19 |
Correct |
1987 ms |
466732 KB |
Output is correct |
20 |
Correct |
2029 ms |
466544 KB |
Output is correct |
21 |
Correct |
2005 ms |
466936 KB |
Output is correct |
22 |
Correct |
316 ms |
47784 KB |
Output is correct |
23 |
Correct |
315 ms |
43808 KB |
Output is correct |
24 |
Correct |
82 ms |
5088 KB |
Output is correct |
25 |
Correct |
1940 ms |
466472 KB |
Output is correct |
26 |
Correct |
1925 ms |
466804 KB |
Output is correct |
27 |
Correct |
1728 ms |
466624 KB |
Output is correct |
28 |
Incorrect |
147 ms |
10024 KB |
Output isn't correct |
29 |
Halted |
0 ms |
0 KB |
- |