#include<bits/stdc++.h>
using namespace std;
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
typedef tree< long long,
null_type,
less_equal<long long>,
rb_tree_tag,
tree_order_statistics_node_update>
ordered_multiset;
typedef long long ll;
#define int long long
#define F first
#define S second
#define mpr make_pair
#define pii pair<int,int>
const int maxn = 6e5+10;
const int mod = 1e9+7;
const ll inf = 1e18+10;
int n, m;
ordered_multiset seg[maxn<<2];
void add(int pos, int val, int v = 1, int tl = 1, int tr = n)
{
seg[v].insert(val);
if(tl == tr) return;
int tm = (tl + tr) >> 1;
if(pos <= tm) add(pos, val, v<<1, tl, tm);
else add(pos, val, v<<1|1, tm+1, tr);
}
int qu(int l, int r, int val, int v = 1, int tl = 1, int tr = n)
{
if(l > r) return 0;
if(tl == l && tr == r)
{
int x = seg[v].order_of_key(val);
int y = seg[v].size();
return y-x;
}
int tm = (tl + tr) >> 1;
return qu(l, min(tm,r), val, v<<1, tl, tm) +
qu(max(tm+1,l), r, val, v<<1|1, tm+1, tr);
}
vector<int> ve;
int mp(int x) {return upper_bound(ve.begin(), ve.end(), x) - ve.begin();}
vector<pair<int,pii>> X;
int A[maxn], B[maxn], C[maxn];
vector<pair<pii,int>> Q[maxn];
int ans[maxn];
signed main()
{
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int q; cin>> m >> q;
for(int i = 1, a, b; i <= m; i++)
{
cin>> a >> b;
X.push_back({a+b,{a,b}});
ve.push_back(a+b); ve.push_back(a); ve.push_back(b);
}
sort(X.begin(), X.end());
for(int i = 1; i <= q; i++)
{
cin>> A[i] >> B[i] >> C[i];
ve.push_back(A[i]); ve.push_back(B[i]); ve.push_back(C[i]);
}
sort(ve.begin(), ve.end());
ve.resize(unique(ve.begin(), ve.end()) - ve.begin());
for(int i = 1; i <= q; i++)
{
A[i] = mp(A[i]); B[i] = mp(B[i]); C[i] = mp(C[i]);
Q[C[i]].push_back({{A[i],B[i]},i});
}
for(auto &x : X)
{
x.F = mp(x.F);
x.S.F = mp(x.S.F);
x.S.S = mp(x.S.S);
}
n = ve.size();
reverse(X.begin(), X.end());
int ptr = 0;
for(int i = maxn-1; i >= 0; i--)
if(Q[i].size())
{
// cout<< i <<"\n";
while(ptr < X.size())
if(X[ptr].F >= i)
{
// cout<< X[ptr].F <<" "<< X[ptr].S.F <<" "<< X[ptr].S.S <<"\n";
add(X[ptr].S.F, X[ptr].S.S);
ptr++;
}
else break;
// cout<<"\n";
for(auto x : Q[i])
{
int A = x.F.F, B = x.F.S, id = x.S;
// cout<< id <<" "<< A <<" "<< B <<"\n";
ans[id] = qu(A, n, B);
}
// cout<<"\n";
}
for(int i = 1; i <= q; i++) cout<< ans[i] <<"\n";
}
/*
5 4
35 100
70 70
45 15
80 40
20 95
20 50 120
10 10 100
60 60 80
0 100 100
*/
Compilation message
examination.cpp: In function 'int main()':
examination.cpp:102:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
102 | while(ptr < X.size())
| ~~~~^~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
234 ms |
239888 KB |
Output is correct |
2 |
Correct |
242 ms |
239864 KB |
Output is correct |
3 |
Correct |
235 ms |
239788 KB |
Output is correct |
4 |
Correct |
232 ms |
239864 KB |
Output is correct |
5 |
Correct |
238 ms |
239992 KB |
Output is correct |
6 |
Correct |
234 ms |
239864 KB |
Output is correct |
7 |
Correct |
256 ms |
243224 KB |
Output is correct |
8 |
Correct |
254 ms |
243188 KB |
Output is correct |
9 |
Correct |
265 ms |
243360 KB |
Output is correct |
10 |
Correct |
261 ms |
243316 KB |
Output is correct |
11 |
Correct |
262 ms |
243188 KB |
Output is correct |
12 |
Correct |
245 ms |
241396 KB |
Output is correct |
13 |
Correct |
251 ms |
243444 KB |
Output is correct |
14 |
Correct |
254 ms |
243192 KB |
Output is correct |
15 |
Correct |
258 ms |
243316 KB |
Output is correct |
16 |
Correct |
251 ms |
243060 KB |
Output is correct |
17 |
Correct |
280 ms |
243060 KB |
Output is correct |
18 |
Correct |
242 ms |
240888 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2740 ms |
368616 KB |
Output is correct |
2 |
Correct |
2712 ms |
368636 KB |
Output is correct |
3 |
Correct |
2737 ms |
368872 KB |
Output is correct |
4 |
Correct |
1688 ms |
365152 KB |
Output is correct |
5 |
Correct |
1665 ms |
365800 KB |
Output is correct |
6 |
Correct |
677 ms |
288884 KB |
Output is correct |
7 |
Correct |
2762 ms |
368576 KB |
Output is correct |
8 |
Correct |
2613 ms |
368800 KB |
Output is correct |
9 |
Correct |
2360 ms |
368356 KB |
Output is correct |
10 |
Correct |
1446 ms |
367592 KB |
Output is correct |
11 |
Correct |
1436 ms |
364260 KB |
Output is correct |
12 |
Correct |
540 ms |
272484 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2740 ms |
368616 KB |
Output is correct |
2 |
Correct |
2712 ms |
368636 KB |
Output is correct |
3 |
Correct |
2737 ms |
368872 KB |
Output is correct |
4 |
Correct |
1688 ms |
365152 KB |
Output is correct |
5 |
Correct |
1665 ms |
365800 KB |
Output is correct |
6 |
Correct |
677 ms |
288884 KB |
Output is correct |
7 |
Correct |
2762 ms |
368576 KB |
Output is correct |
8 |
Correct |
2613 ms |
368800 KB |
Output is correct |
9 |
Correct |
2360 ms |
368356 KB |
Output is correct |
10 |
Correct |
1446 ms |
367592 KB |
Output is correct |
11 |
Correct |
1436 ms |
364260 KB |
Output is correct |
12 |
Correct |
540 ms |
272484 KB |
Output is correct |
13 |
Correct |
2635 ms |
371948 KB |
Output is correct |
14 |
Correct |
2860 ms |
370276 KB |
Output is correct |
15 |
Correct |
2726 ms |
368612 KB |
Output is correct |
16 |
Correct |
1616 ms |
366668 KB |
Output is correct |
17 |
Correct |
1478 ms |
367208 KB |
Output is correct |
18 |
Correct |
663 ms |
289512 KB |
Output is correct |
19 |
Correct |
2523 ms |
372072 KB |
Output is correct |
20 |
Correct |
2698 ms |
370960 KB |
Output is correct |
21 |
Correct |
2550 ms |
371816 KB |
Output is correct |
22 |
Correct |
1465 ms |
367432 KB |
Output is correct |
23 |
Correct |
1418 ms |
364136 KB |
Output is correct |
24 |
Correct |
538 ms |
272488 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
234 ms |
239888 KB |
Output is correct |
2 |
Correct |
242 ms |
239864 KB |
Output is correct |
3 |
Correct |
235 ms |
239788 KB |
Output is correct |
4 |
Correct |
232 ms |
239864 KB |
Output is correct |
5 |
Correct |
238 ms |
239992 KB |
Output is correct |
6 |
Correct |
234 ms |
239864 KB |
Output is correct |
7 |
Correct |
256 ms |
243224 KB |
Output is correct |
8 |
Correct |
254 ms |
243188 KB |
Output is correct |
9 |
Correct |
265 ms |
243360 KB |
Output is correct |
10 |
Correct |
261 ms |
243316 KB |
Output is correct |
11 |
Correct |
262 ms |
243188 KB |
Output is correct |
12 |
Correct |
245 ms |
241396 KB |
Output is correct |
13 |
Correct |
251 ms |
243444 KB |
Output is correct |
14 |
Correct |
254 ms |
243192 KB |
Output is correct |
15 |
Correct |
258 ms |
243316 KB |
Output is correct |
16 |
Correct |
251 ms |
243060 KB |
Output is correct |
17 |
Correct |
280 ms |
243060 KB |
Output is correct |
18 |
Correct |
242 ms |
240888 KB |
Output is correct |
19 |
Correct |
2740 ms |
368616 KB |
Output is correct |
20 |
Correct |
2712 ms |
368636 KB |
Output is correct |
21 |
Correct |
2737 ms |
368872 KB |
Output is correct |
22 |
Correct |
1688 ms |
365152 KB |
Output is correct |
23 |
Correct |
1665 ms |
365800 KB |
Output is correct |
24 |
Correct |
677 ms |
288884 KB |
Output is correct |
25 |
Correct |
2762 ms |
368576 KB |
Output is correct |
26 |
Correct |
2613 ms |
368800 KB |
Output is correct |
27 |
Correct |
2360 ms |
368356 KB |
Output is correct |
28 |
Correct |
1446 ms |
367592 KB |
Output is correct |
29 |
Correct |
1436 ms |
364260 KB |
Output is correct |
30 |
Correct |
540 ms |
272484 KB |
Output is correct |
31 |
Correct |
2635 ms |
371948 KB |
Output is correct |
32 |
Correct |
2860 ms |
370276 KB |
Output is correct |
33 |
Correct |
2726 ms |
368612 KB |
Output is correct |
34 |
Correct |
1616 ms |
366668 KB |
Output is correct |
35 |
Correct |
1478 ms |
367208 KB |
Output is correct |
36 |
Correct |
663 ms |
289512 KB |
Output is correct |
37 |
Correct |
2523 ms |
372072 KB |
Output is correct |
38 |
Correct |
2698 ms |
370960 KB |
Output is correct |
39 |
Correct |
2550 ms |
371816 KB |
Output is correct |
40 |
Correct |
1465 ms |
367432 KB |
Output is correct |
41 |
Correct |
1418 ms |
364136 KB |
Output is correct |
42 |
Correct |
538 ms |
272488 KB |
Output is correct |
43 |
Correct |
2746 ms |
385624 KB |
Output is correct |
44 |
Correct |
2739 ms |
385512 KB |
Output is correct |
45 |
Execution timed out |
3015 ms |
385376 KB |
Time limit exceeded |
46 |
Halted |
0 ms |
0 KB |
- |