#include<bits/allocator.h>
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx2,fma,bmi,bmi2,popcnt,lzcnt")
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define int128 __int128_t
#define double long double
#define gcd __gcd
#define lcm(a, b) ((a)/gcd(a, b)*(b))
#define sqrt sqrtl
#define log2 log2l
#define log10 log10l
#define floor floorl
#define to_string str
#define yes cout << "YES"
#define no cout << "NO"
#define trav(i, a) for (auto &i: (a))
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define sz(a) (int)a.size()
#define Max(a) *max_element(all(a))
#define Min(a) *min_element(all(a))
#define Find(a, n) (find(all(a), n) - a.begin())
#define Count(a, n) count(all(a), n)
#define Upper(a, n) (upper_bound(all(a), n) - a.begin())
#define Lower(a, n) (lower_bound(all(a), n) - a.begin())
#define next_perm(a) next_permutation(all(a))
#define prev_perm(a) prev_permutation(all(a))
#define sorted(a) is_sorted(all(a))
#define sum(a) accumulate(all(a), 0)
#define sumll(a) accumulate(all(a), 0ll)
#define Sort(a) sort(all(a))
#define Reverse(a) reverse(all(a))
#define Unique(a) Sort(a), (a).resize(unique(all(a)) - a.begin())
#define pb push_back
#define eb emplace_back
#define popcount __builtin_popcount
#define popcountll __builtin_popcountll
#define clz __builtin_clz
#define clzll __buitlin_clzll
#define ctz __builtin_ctz
#define ctzll __builtin_ctzll
#define open(s) freopen(s, "r", stdin)
#define write(s) freopen(s, "w", stdout)
#define fileopen(s) open((string(s) + ".inp").c_str()), write((string(s) + ".out").c_str());
#define For(i, a, b) for (auto i = (a); i < (b); i++)
#define Fore(i, a, b) for (auto i = (a); i >= (b); i--)
#define FOR(i, a, b) for (auto i = (a); i <= (b); i++)
#define ret(s) return void(cout << s);
const int mod = 1e9 + 7, mod2 = 998244353;
const double PI = acos(-1), eps = 1e-9;
const ull npos = string::npos;
const int dx[] = {0, 0, -1, 1}, dy[] = {-1, 1, 0, 0};
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using cd = complex<double>;
mt19937 mt(chrono::steady_clock::now().time_since_epoch().count());
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef vector<double> vdo;
typedef vector<vdo> vvdo;
typedef vector<string> vs;
typedef vector<pii> vpair;
typedef vector<vpair> vvpair;
typedef vector<bool> vb;
typedef vector<vb> vvb;
typedef vector<char> vc;
typedef vector<vc> vvc;
typedef vector<cd> vcd;
typedef priority_queue<int> pq;
typedef priority_queue<int, vi, greater<int>> pqg;
typedef priority_queue<ll> pqll;
typedef priority_queue<ll, vll, greater<ll>> pqgll;
ll add(ll a, ll b, int m) {if (a >= m) a%=m;if (b >= m) b%=m;a+=b;return a >= m ? a - m: a;}
ll sub(ll a, ll b, int m) {if (a >= m) a%=m;if (b >= m) b%=m;a-=b;return a < 0 ? a + m: a;}
ll mul(ll a, ll b, int m) {if (a >= m) a%=m;if (b >= m) b%=m;return a*b % m;}
ll bin_mul(ll a, ll b, ll m) {if (a >= m) a%=m;if (b >= m) b%=m;ll x = 0;while (b) {if (b & 1) x = (x + a) % m;a = (a + a) % m;b>>=1;}return x;}
ll power(ll a, ll b, int m) {ll x = 1;if (a >= m) a%=m; while (b) {if (b & 1) x = x*a % m;a = a*a % m;b>>=1;}return x;}
ll power(ll a, ll b) {ll x = 1;while (b) {if (b & 1) x = x*a;a = a*a;b>>=1;}return x;}
ll ceil(ll a, ll b) {return (a + b - 1)/b;}
ll to_int(const string &s) {ll x = 0; for (int i = (s[0] == '-'); i < sz(s); i++) x = x*10 + s[i] - '0';return x*(s[0] == '-' ? -1: 1);}
bool is_prime(ll n) {if (n < 2) return 0;if (n < 4) return 1;if (n % 2 == 0 || n % 3 == 0) return 0;for (ll i = 5; i*i <= n; i+=6) {if(n % i == 0 || n % (i + 2) == 0) return 0;}return 1;}
bool is_square(ll n) {ll k = sqrt(n); return k*k == n;}
ll factorial(int n) {ll x = 1;for (int i = 2; i <= n; i++) x*=i;return x;}
ll factorial(int n, int m) {ll x = 1;for (ll i = 2; i <= n; i++) x = x*i % m;return x;}
bool is_power(ll n, ll k) {while (n % k == 0) n/=k;return n == 1ll;}
string str(ll n) {if (n == 0) return "0"; string s = ""; bool c = 0; if (n < 0) c = 1, n = -n; while (n) {s+=n % 10 + '0'; n/=10;} if (c) s+='-'; Reverse(s); return s;}
string repeat(const string &s, int n) {if (n < 0) return ""; string x = ""; while (n--) x+=s; return x;}
string bin(ll n) {string s = ""; while (n) {s+=(n & 1) + '0'; n>>=1;} Reverse(s); return s;}
void sieve(vector<bool> &a) {int n = a.size(); a[0] = a[1] = 0; for (int i = 4; i < n; i+=2) a[i] = 0; for (int i = 3; i*i < n; i+=2) {if (a[i]) {for (int j = i*i; j < n; j+=(i << 1)) a[j] = 0;}}}
void sieve(bool a[], int n) {a[0] = a[1] = 0; for (int i = 4; i < n; i+=2) a[i] = 0; for (int i = 3; i*i < n; i+=2) {if (a[i]) {for (int j = i*i; j < n; j+=(i << 1)) a[j] = 0;}}}
void sieve(vector<int> &a) {int n = a.size(); for (int i = 2; i < n; i+=2) a[i] = 2; for (int i = 3; i*i < n; i+=2) {if (!a[i]) {for (int j = i; j < n; j+=(i << 1)) a[j] = i;}} for (int i = 3; i < n; i+=2) {if (!a[i]) a[i] = i;}}
void sieve(int a[], int n) {for (int i = 2; i < n; i+=2) a[i] = 2; for (int i = 3; i*i < n; i+=2) {if (!a[i]) {for (int j = i; j < n; j+=(i << 1)) a[j] = i;}} for (int i = 3; i < n; i+=2) {if (!a[i]) a[i] = i;}}
vector<pii> factorize(int n) {vector<pii> a; for (int i = 2; i*i <= n; i++) {if (n % i == 0) {int k = 0; while (n % i == 0) k++, n/=i; a.emplace_back(i, k);}} if (n > 1) a.emplace_back(n, 1); return a;}
int rand(int l, int r) {return uniform_int_distribution<int>(l, r)(mt);}
int Log2(int n) {return 31 - __builtin_clz(n);}
template<class T> void compress(vector<T> &a) {vector<T> b; for (T &i: a) b.push_back(i); sort(all(b)); b.resize(unique(all(b)) - b.begin()); for (T &i: a) i = lower_bound(all(b), i) - b.begin() + 1;}
template<class A, class B> istream& operator>>(istream& in, pair<A, B> &p) {in >> p.first >> p.second; return in;}
template<class A, class B> ostream& operator<<(ostream& out, const pair<A, B> &p) {out << p.first << ' ' << p.second; return out;}
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, const vector<T> &a) {for (auto &i: a) out << i << ' '; return out;}
template<class T> istream& operator>>(istream& in, vector<vector<T>> &a) {for (auto &i: a) in >> i; return in;}
template<class T> ostream& operator<<(ostream& out, const vector<vector<T>> &a) {for (auto &i: a) out << i << '\n'; return out;}
template<class T> istream& operator>>(istream& in, deque<T> &a) {for (auto &i: a) in >> i; return in;}
template<class T> ostream& operator<<(ostream& out, const deque<T> &a) {for (auto &i: a) out << i << ' '; return out;}
// istream& operator>>(istream& in, __int128_t &a) {string s; in >> s; a = 0; for (auto &i: s) a = a*10 + (i - '0'); return in;}
// ostream& operator<<(ostream& out, __int128_t a) {string s = ""; while (a > 0) {s+=(int)(a % 10) + '0'; a/=10;} Reverse(s); out << s; return out;}
const int N = 2e5 + 5, inf = 2e9;
struct que {
int x, y, z, i;
que(int x = 0, int y = 0, int z = 0, int i = 0): x(x), y(y), z(z), i(i) {}
} a[N];
vll b[N];
vi v[N];
int n, q, m, f[N];
void fake(int i, int j, bool c) {
if (!c) {
for (int k = i; k <= m; k+=k & (-k)) {
for (int l = j; l <= m; l+=l & (-l)) v[k].pb(l);
}
} else {
for (int k = i; k; k-=k & (-k)) {
for (int l = j; l; l-=l & (-l)) v[k].pb(l);
}
}
}
void upd(int i, int j) {
for (int k = i; k <= m; k+=k & (-k)) {
for (int l = Lower(v[k], j) + 1; l <= sz(v[k]); l+=l & (-l)) b[k][l]++;
}
}
int get(int i, int j) {
int x = 0;
for (int k = i; k; k-=k & (-k)) {
for (int l = Lower(v[k], j) + 1; l; l-=l & (-l)) x+=b[k][l];
}
return x;
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
cout << fixed << setprecision(10);
cin >> n >> q;
m = n + q;
vi cy, cz;
FOR(i,1,n) cin >> a[i].x >> a[i].y, a[i].z = a[i].x + a[i].y, a[i].i = i;
FOR(i,n+1,m) cin >> a[i].x >> a[i].y >> a[i].z, a[i].i = i;
FOR(i,1,m) a[i].x = inf - a[i].x, a[i].y = inf - a[i].y, a[i].z = inf - a[i].z;
sort(a + 1, a + m + 1, [](que x, que y){
return make_tuple(x.x, x.y, x.z, x.i) < make_tuple(y.x, y.y, y.z, y.i);
});
FOR(i,1,m) cy.pb(a[i].y), cz.pb(a[i].z);
Unique(cy); Unique(cz);
FOR(i,1,m){
a[i].y = Lower(cy, a[i].y) + 1, a[i].z = Lower(cz, a[i].z) + 1;
fake(a[i].y, a[i].z, a[i].i > n);
}
FOR(i,1,m) Unique(v[i]), b[i].resize(sz(v[i]) + 1);
FOR(i,1,m){
if (a[i].i <= n) upd(a[i].y, a[i].z);
else f[a[i].i - n] = get(a[i].y, a[i].z);
}
FOR(i,1,q) cout << f[i] << '\n';
cerr << "\nProcess returned 0 (0x0) execution time : " << 0.001*clock() << " s";
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
13400 KB |
Output is correct |
2 |
Correct |
5 ms |
13400 KB |
Output is correct |
3 |
Correct |
4 ms |
13404 KB |
Output is correct |
4 |
Correct |
4 ms |
13404 KB |
Output is correct |
5 |
Correct |
4 ms |
13504 KB |
Output is correct |
6 |
Correct |
4 ms |
13580 KB |
Output is correct |
7 |
Correct |
19 ms |
16092 KB |
Output is correct |
8 |
Correct |
22 ms |
16208 KB |
Output is correct |
9 |
Correct |
19 ms |
16220 KB |
Output is correct |
10 |
Correct |
18 ms |
15420 KB |
Output is correct |
11 |
Correct |
18 ms |
16000 KB |
Output is correct |
12 |
Correct |
16 ms |
15424 KB |
Output is correct |
13 |
Correct |
19 ms |
15964 KB |
Output is correct |
14 |
Correct |
18 ms |
15960 KB |
Output is correct |
15 |
Correct |
22 ms |
15964 KB |
Output is correct |
16 |
Correct |
17 ms |
15964 KB |
Output is correct |
17 |
Correct |
17 ms |
15452 KB |
Output is correct |
18 |
Correct |
17 ms |
15856 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1026 ms |
144796 KB |
Output is correct |
2 |
Correct |
1014 ms |
138652 KB |
Output is correct |
3 |
Correct |
1032 ms |
141924 KB |
Output is correct |
4 |
Correct |
884 ms |
108616 KB |
Output is correct |
5 |
Correct |
819 ms |
125636 KB |
Output is correct |
6 |
Correct |
763 ms |
130004 KB |
Output is correct |
7 |
Correct |
1116 ms |
148836 KB |
Output is correct |
8 |
Correct |
994 ms |
140376 KB |
Output is correct |
9 |
Correct |
1018 ms |
159576 KB |
Output is correct |
10 |
Correct |
844 ms |
139152 KB |
Output is correct |
11 |
Correct |
874 ms |
102424 KB |
Output is correct |
12 |
Correct |
842 ms |
134976 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1026 ms |
144796 KB |
Output is correct |
2 |
Correct |
1014 ms |
138652 KB |
Output is correct |
3 |
Correct |
1032 ms |
141924 KB |
Output is correct |
4 |
Correct |
884 ms |
108616 KB |
Output is correct |
5 |
Correct |
819 ms |
125636 KB |
Output is correct |
6 |
Correct |
763 ms |
130004 KB |
Output is correct |
7 |
Correct |
1116 ms |
148836 KB |
Output is correct |
8 |
Correct |
994 ms |
140376 KB |
Output is correct |
9 |
Correct |
1018 ms |
159576 KB |
Output is correct |
10 |
Correct |
844 ms |
139152 KB |
Output is correct |
11 |
Correct |
874 ms |
102424 KB |
Output is correct |
12 |
Correct |
842 ms |
134976 KB |
Output is correct |
13 |
Correct |
1169 ms |
163500 KB |
Output is correct |
14 |
Correct |
1193 ms |
165216 KB |
Output is correct |
15 |
Correct |
1016 ms |
144796 KB |
Output is correct |
16 |
Correct |
935 ms |
107312 KB |
Output is correct |
17 |
Correct |
995 ms |
145016 KB |
Output is correct |
18 |
Correct |
792 ms |
128948 KB |
Output is correct |
19 |
Correct |
1243 ms |
165040 KB |
Output is correct |
20 |
Correct |
1221 ms |
163952 KB |
Output is correct |
21 |
Correct |
1223 ms |
158028 KB |
Output is correct |
22 |
Correct |
782 ms |
127612 KB |
Output is correct |
23 |
Correct |
855 ms |
102616 KB |
Output is correct |
24 |
Correct |
840 ms |
135068 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
13400 KB |
Output is correct |
2 |
Correct |
5 ms |
13400 KB |
Output is correct |
3 |
Correct |
4 ms |
13404 KB |
Output is correct |
4 |
Correct |
4 ms |
13404 KB |
Output is correct |
5 |
Correct |
4 ms |
13504 KB |
Output is correct |
6 |
Correct |
4 ms |
13580 KB |
Output is correct |
7 |
Correct |
19 ms |
16092 KB |
Output is correct |
8 |
Correct |
22 ms |
16208 KB |
Output is correct |
9 |
Correct |
19 ms |
16220 KB |
Output is correct |
10 |
Correct |
18 ms |
15420 KB |
Output is correct |
11 |
Correct |
18 ms |
16000 KB |
Output is correct |
12 |
Correct |
16 ms |
15424 KB |
Output is correct |
13 |
Correct |
19 ms |
15964 KB |
Output is correct |
14 |
Correct |
18 ms |
15960 KB |
Output is correct |
15 |
Correct |
22 ms |
15964 KB |
Output is correct |
16 |
Correct |
17 ms |
15964 KB |
Output is correct |
17 |
Correct |
17 ms |
15452 KB |
Output is correct |
18 |
Correct |
17 ms |
15856 KB |
Output is correct |
19 |
Correct |
1026 ms |
144796 KB |
Output is correct |
20 |
Correct |
1014 ms |
138652 KB |
Output is correct |
21 |
Correct |
1032 ms |
141924 KB |
Output is correct |
22 |
Correct |
884 ms |
108616 KB |
Output is correct |
23 |
Correct |
819 ms |
125636 KB |
Output is correct |
24 |
Correct |
763 ms |
130004 KB |
Output is correct |
25 |
Correct |
1116 ms |
148836 KB |
Output is correct |
26 |
Correct |
994 ms |
140376 KB |
Output is correct |
27 |
Correct |
1018 ms |
159576 KB |
Output is correct |
28 |
Correct |
844 ms |
139152 KB |
Output is correct |
29 |
Correct |
874 ms |
102424 KB |
Output is correct |
30 |
Correct |
842 ms |
134976 KB |
Output is correct |
31 |
Correct |
1169 ms |
163500 KB |
Output is correct |
32 |
Correct |
1193 ms |
165216 KB |
Output is correct |
33 |
Correct |
1016 ms |
144796 KB |
Output is correct |
34 |
Correct |
935 ms |
107312 KB |
Output is correct |
35 |
Correct |
995 ms |
145016 KB |
Output is correct |
36 |
Correct |
792 ms |
128948 KB |
Output is correct |
37 |
Correct |
1243 ms |
165040 KB |
Output is correct |
38 |
Correct |
1221 ms |
163952 KB |
Output is correct |
39 |
Correct |
1223 ms |
158028 KB |
Output is correct |
40 |
Correct |
782 ms |
127612 KB |
Output is correct |
41 |
Correct |
855 ms |
102616 KB |
Output is correct |
42 |
Correct |
840 ms |
135068 KB |
Output is correct |
43 |
Correct |
1232 ms |
180904 KB |
Output is correct |
44 |
Correct |
1228 ms |
181332 KB |
Output is correct |
45 |
Correct |
1229 ms |
185088 KB |
Output is correct |
46 |
Correct |
943 ms |
114180 KB |
Output is correct |
47 |
Correct |
1032 ms |
163968 KB |
Output is correct |
48 |
Correct |
728 ms |
123408 KB |
Output is correct |
49 |
Correct |
1190 ms |
185256 KB |
Output is correct |
50 |
Correct |
1258 ms |
185112 KB |
Output is correct |
51 |
Correct |
1243 ms |
188756 KB |
Output is correct |
52 |
Correct |
1006 ms |
161704 KB |
Output is correct |
53 |
Correct |
858 ms |
105976 KB |
Output is correct |