This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
/**
* code generated by JHelper
* More info: https://github.com/AlexeyDmitriev/JHelper
* @author
*/
#include <bits/stdc++.h>
using namespace std;
#define long long long
const long MOD = 1e9+7, LINF = 1e18 + 1e16;
const int INF = 1e9+1;
const double EPS = 1e-10;
const int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
const int N = 1e5+1;
struct fenwick {
vector<int> f;
fenwick(int n) {
f.resize(n + 10);
}
void update(int i) {
assert(i >= 0);
++i;
while(i < f.size()) ++f[i], i += i & -i;
}
int query(int i) {
++i;
int ret = 0;
while(i > 0) ret += f[i], i -= i & -i;
return ret;
}
};
struct info {
int sum, x, y, tp, id;
info(int sum, int x, int y, int tp, int id): sum(sum), x(x), y(y), tp(tp), id(id) {}
bool operator<(const info& rhs) const {
return make_tuple(sum, x, y, tp, id) < make_tuple(rhs.sum, rhs.x, rhs.y, rhs.tp, rhs.id);
}
};
class Examination {
int n, q, res[N];
vector<int> ls[N], xs;
vector<info> a;
fenwick *f[N];
void compress() {
sort(xs.begin(), xs.end());
xs.resize(unique(xs.begin(), xs.end()) - xs.begin());
for(int i = 0; i < n; i++) {
a[i].x = lower_bound(xs.begin(), xs.end(), a[i].x) - xs.begin();
}
}
void ins(int i, int v) {
++i;
while(i <= xs.size()) ls[i].push_back(v), i += i & -i;
}
void build() {
for(int i = 1; i <= xs.size(); i++) {
sort(ls[i].begin(), ls[i].end());
ls[i].resize(unique(ls[i].begin(), ls[i].end()) - ls[i].begin());
f[i] = new fenwick(ls[i].size());
}
}
void update(int i, int v) {
assert(i >= 0);
++i;
while(i <= xs.size()) {
auto it = lower_bound(ls[i].begin(), ls[i].end(), v);
assert(*it == v);
f[i]->update(it - ls[i].begin());
i += i & -i;
}
}
int query(int i, int v) {
++i;
int ret = 0;
while(i > 0) {
auto it = upper_bound(ls[i].begin(), ls[i].end(), v);
ret += f[i]->query(it - ls[i].begin() - 1);
i -= i & -i;
}
return ret;
}
public:
void solve(istream &cin, ostream &cout) {
cin >> n >> q;
for(int i = 0, x, y; i < n; i++) {
cin >> x >> y;
x *= -1, y *= -1;
xs.push_back(x);
a.emplace_back(x + y, x, y, 0, i);
}
compress();
for(info tt: a) {
if(tt.tp == 0) ins(tt.x, tt.y);
}
build();
for(int i = 0, x, y, z; i < q; i++) {
cin >> x >> y >> z;
x *= -1, y *= -1, z *= -1;
auto itx = upper_bound(xs.begin(), xs.end(), x);
int posx = itx - xs.begin() - 1;
a.emplace_back(z, posx, y, 1, i);
}
sort(a.begin(), a.end());
for(info tt: a) {
if(tt.tp == 0) update(tt.x ,tt.y);
else res[tt.id] = query(tt.x, tt.y);
}
for(int i = 0; i < q; i++) {
cout << res[i] << '\n';
}
}
};
class Solver {
public:
void solve(std::istream& in, std::ostream& out) {
Examination *obj = new Examination();
obj->solve(in, out);
delete obj;
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
Solver solver;
std::istream& in(std::cin);
std::ostream& out(std::cout);
solver.solve(in, out);
return 0;
}
Compilation message (stderr)
examination.cpp: In member function 'void fenwick::update(int)':
examination.cpp:24:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(i < f.size()) ++f[i], i += i & -i;
~~^~~~~~~~~~
examination.cpp: In member function 'void Examination::ins(int, int)':
examination.cpp:59:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(i <= xs.size()) ls[i].push_back(v), i += i & -i;
~~^~~~~~~~~~~~
examination.cpp: In member function 'void Examination::build()':
examination.cpp:63:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 1; i <= xs.size(); i++) {
~~^~~~~~~~~~~~
examination.cpp: In member function 'void Examination::update(int, int)':
examination.cpp:73:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(i <= xs.size()) {
~~^~~~~~~~~~~~
# | 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... |