답안 #836894

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
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)
      |                     ~~^~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 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
# 결과 실행 시간 메모리 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 -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -