# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
836862 | 2023-08-24T16:24:47 Z | borisAngelov | Examination (JOI19_examination) | C++17 | 3000 ms | 13516 KB |
#include <bits/stdc++.h> #pragma GCC optimize("O2") using namespace std; const int maxn = 600005; const int max_number = 600000; int n, q; struct element { int x; int y; int z; bool is_query; int query_idx; inline friend bool operator<(const element& fr, const element& sc) { return (fr.x > sc.x || (fr.x == sc.x && fr.is_query == false)); } }; element a[maxn]; void compress() { vector<int> to_sort; unordered_map<int, int> compressed; int curr_value = 0; for (int i = 1; i <= n + q; ++i) { to_sort.push_back(a[i].x); to_sort.push_back(a[i].y); to_sort.push_back(a[i].z); } sort(to_sort.begin(), to_sort.end()); for (int i = 0; i < to_sort.size(); ++i) { if (i == 0 || to_sort[i] != to_sort[i - 1]) { compressed[to_sort[i]] = ++curr_value; } } for (int i = 1; i <= n + q; ++i) { a[i].x = compressed[a[i].x]; a[i].y = compressed[a[i].y]; a[i].z = compressed[a[i].z]; } } int answers[maxn]; struct fenwick_tree { int tree[maxn]; void update(int pos, int delta) { for (int i = pos; i <= max_number; i += (i & (-i))) { tree[i] += delta; } } int query(int pos) { int result = 0; for (int i = pos; i >= 1; i -= (i & (-i))) { result += tree[i]; } return result; } }; fenwick_tree bit; void read_int(int &number) { number = 0; char c = getchar(); while (c < '0' || c > '9') { c = getchar(); } while ('0' <= c && c <= '9') { number = number * 10 + (c - '0'); c = getchar(); } } void fastIO() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); } int main() { fastIO(); //cin >> n >> q; read_int(n); read_int(q); for (int i = 1; i <= n; ++i) { //cin >> a[i].x >> a[i].y; read_int(a[i].x); read_int(a[i].y); a[i].z = a[i].x + a[i].y; } for (int i = 1; i <= q; ++i) { //cin >> a[i + n].x >> a[i + n].y >> a[i + n].z; read_int(a[i + n].x); read_int(a[i + n].y); read_int(a[i + n].z); a[i + n].is_query = true; a[i + n].query_idx = i; } compress(); sort(a + 1, a + n + q + 1); for (int i = 1; i <= n + q; ++i) { if (a[i].is_query == false) { bit.update(a[i].y, +1); } else { answers[a[i].query_idx] = (bit.query(max_number) - bit.query(a[i].y - 1)); } } for (int i = 1; i <= q; ++i) { cout << answers[i] << "\n"; } return 0; } /* 5 4 35 100 70 70 45 15 80 40 20 95 20 50 0 10 10 0 60 60 0 0 100 0 */
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 117 ms | 12116 KB | Output is correct |
2 | Correct | 98 ms | 12112 KB | Output is correct |
3 | Correct | 92 ms | 12104 KB | Output is correct |
4 | Correct | 80 ms | 11216 KB | Output is correct |
5 | Execution timed out | 3036 ms | 13516 KB | Time limit exceeded |
6 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 117 ms | 12116 KB | Output is correct |
2 | Correct | 98 ms | 12112 KB | Output is correct |
3 | Correct | 92 ms | 12104 KB | Output is correct |
4 | Correct | 80 ms | 11216 KB | Output is correct |
5 | Execution timed out | 3036 ms | 13516 KB | Time limit exceeded |
6 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |