Submission #836894

# Submission time Handle Problem Language Result Execution time Memory
836894 2023-08-24T16:56:15 Z borisAngelov Examination (JOI19_examination) C++17
20 / 100
119 ms 12900 KB
#include <bits/stdc++.h>
 
using namespace std;
 
const int maxn = 600005;
const int max_number = 600000;
 
int n, q;
 
struct element
{
    int x;
    int y;
    int z;
    int is_query;
    int query_idx;
};
 
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 fastIO()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
}
 
int main()
{
    fastIO();
 
    cin >> n >> q;
 
    for (int i = 1; i <= n; ++i)
    {
        cin >> a[i].x >> 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;
        a[i + n].is_query = true;
        a[i + n].query_idx = i;
    }
 
    compress();
 
    sort(a + 1, a + n + q + 1, [&](element fr, element sc)
    {
        return make_pair(fr.x, -fr.is_query) > make_pair(sc.x, -sc.is_query);
    });
 
    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

examination.cpp: In function 'void compress()':
examination.cpp:36:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     for (int i = 0; i < to_sort.size(); ++i)
      |                     ~~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 106 ms 12104 KB Output is correct
2 Correct 108 ms 12112 KB Output is correct
3 Correct 110 ms 12264 KB Output is correct
4 Correct 95 ms 11224 KB Output is correct
5 Correct 87 ms 11192 KB Output is correct
6 Correct 61 ms 8476 KB Output is correct
7 Correct 102 ms 12104 KB Output is correct
8 Correct 107 ms 12108 KB Output is correct
9 Correct 105 ms 11976 KB Output is correct
10 Correct 77 ms 11216 KB Output is correct
11 Correct 92 ms 11212 KB Output is correct
12 Correct 63 ms 8388 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 106 ms 12104 KB Output is correct
2 Correct 108 ms 12112 KB Output is correct
3 Correct 110 ms 12264 KB Output is correct
4 Correct 95 ms 11224 KB Output is correct
5 Correct 87 ms 11192 KB Output is correct
6 Correct 61 ms 8476 KB Output is correct
7 Correct 102 ms 12104 KB Output is correct
8 Correct 107 ms 12108 KB Output is correct
9 Correct 105 ms 11976 KB Output is correct
10 Correct 77 ms 11216 KB Output is correct
11 Correct 92 ms 11212 KB Output is correct
12 Correct 63 ms 8388 KB Output is correct
13 Incorrect 119 ms 12900 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -