Submission #56372128


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define all(x) (x).begin(), (x).end()

template<class T> struct BIT {
    int n;
    vector<T> bit;

    void init(int sz) { bit = vector<T> (n = sz + 7); }

    void upd(int i, T x) { 
        for (i++; i < n; i += i & -i) bit[i] += x;
    }

    T query(int i) {
        T ret = 0;
        for (i++; i > 0; i -= i & -i) ret += bit[i];
        return ret;
    }

    T query(int l, int r) { return query(r) - query(l - 1); };
};

const int N = 2e5 + 7;
int n, m;
int p[N], a[N], cnt[N];
vector<int> e[N], f[N];

int main() {
    cin.tie(0)->sync_with_stdio(false);

    cin >> n;

    for (int i = 1; i <= n; i++)
        cin >> p[i];

    cin >> m;

    BIT<int> bit;
    bit.init(n + 1);

    for (int i = 1; i <= m; i++) {
        cin >> a[i];

        int lo = 1, hi = n;
        while (lo < hi) {
            int mid = (lo + hi + 1) / 2;

            if (mid - bit.query(mid, n) <= a[i])
                lo = mid;
            else
                hi = mid - 1;
        }

        a[i] = lo;
        bit.upd(a[i], 1);
        e[a[i]].push_back(i);
    }

    bit.init(n + 1);

    ll inv = 0;

    for (int i = 1; i <= n; i++) {
        cnt[i] = bit.query(p[i], n);

        inv += cnt[i];
        bit.upd(p[i], 1);
    }

    bit.init(m + 1);

    for (int i = n; i >= 1; i--) {
        for (int j : e[i])
            bit.upd(j, 1);

        // find cnt[i]'th one
        if (cnt[i] > 0) {
            int lo = 1, hi = m;
            while (lo < hi) {
                int mid = (lo + hi + 1) / 2;

                if (bit.query(1, mid) <= cnt[i])
                    lo = mid;
                else
                    hi = mid - 1;
            }
            f[lo].push_back(i);
        }
    }

    bit.init(n + 1);
    for (int i = 1; i <= n; i++) {
        if (cnt[i] > 0)
            bit.upd(i, 1);
    }

    for (int i = 1; i <= m; i++) {
        inv -= bit.query(1, a[i]);

        for (int j : f[i])
            bit.upd(j, -1);

        cout << inv << '\n';
    }

    return 0;
}

Submission Info

Submission Time
Task D - Prefix Bubble Sort
User juliany2
Language C++ 20 (gcc 12.2)
Score 700
Code Size 2172 Byte
Status AC
Exec Time 144 ms
Memory 26608 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 2
AC × 67
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt
All 00_sample_01.txt, 00_sample_02.txt, 01_random_case_01.txt, 01_random_case_02.txt, 01_random_case_03.txt, 01_random_case_04.txt, 01_random_case_05.txt, 01_random_case_06.txt, 01_random_case_07.txt, 01_random_case_08.txt, 01_random_case_09.txt, 01_random_case_10.txt, 01_random_case_11.txt, 01_random_case_12.txt, 01_random_case_13.txt, 01_random_case_14.txt, 01_random_case_15.txt, 01_random_case_16.txt, 01_random_case_17.txt, 01_random_case_18.txt, 01_random_case_19.txt, 01_random_case_20.txt, 01_random_case_21.txt, 01_random_case_22.txt, 01_random_case_23.txt, 01_random_case_24.txt, 01_random_case_25.txt, 01_random_case_26.txt, 01_random_case_27.txt, 01_random_case_28.txt, 01_random_case_29.txt, 01_random_case_30.txt, 02_max_case_01.txt, 02_max_case_02.txt, 02_max_case_03.txt, 02_max_case_04.txt, 02_max_case_05.txt, 02_max_case_06.txt, 02_max_case_07.txt, 02_max_case_08.txt, 02_max_case_09.txt, 02_max_case_10.txt, 02_max_case_11.txt, 02_max_case_12.txt, 02_max_case_13.txt, 02_max_case_14.txt, 02_max_case_15.txt, 02_max_case_16.txt, 02_max_case_17.txt, 02_max_case_18.txt, 02_max_case_19.txt, 02_max_case_20.txt, 02_max_case_21.txt, 02_max_case_22.txt, 02_max_case_23.txt, 02_max_case_24.txt, 02_max_case_25.txt, 02_max_case_26.txt, 02_max_case_27.txt, 02_max_case_28.txt, 02_max_case_29.txt, 02_max_case_30.txt, 03_handmade_01.txt, 03_handmade_02.txt, 03_handmade_03.txt, 03_handmade_04.txt, 03_handmade_05.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 3 ms 3484 KiB
00_sample_02.txt AC 3 ms 3576 KiB
01_random_case_01.txt AC 83 ms 17756 KiB
01_random_case_02.txt AC 69 ms 15660 KiB
01_random_case_03.txt AC 64 ms 9432 KiB
01_random_case_04.txt AC 64 ms 8500 KiB
01_random_case_05.txt AC 63 ms 10448 KiB
01_random_case_06.txt AC 108 ms 18800 KiB
01_random_case_07.txt AC 96 ms 16792 KiB
01_random_case_08.txt AC 93 ms 13248 KiB
01_random_case_09.txt AC 83 ms 9600 KiB
01_random_case_10.txt AC 96 ms 12020 KiB
01_random_case_11.txt AC 92 ms 18516 KiB
01_random_case_12.txt AC 80 ms 15912 KiB
01_random_case_13.txt AC 76 ms 10420 KiB
01_random_case_14.txt AC 74 ms 9880 KiB
01_random_case_15.txt AC 80 ms 12600 KiB
01_random_case_16.txt AC 93 ms 18868 KiB
01_random_case_17.txt AC 77 ms 16788 KiB
01_random_case_18.txt AC 74 ms 11636 KiB
01_random_case_19.txt AC 74 ms 10672 KiB
01_random_case_20.txt AC 76 ms 14160 KiB
01_random_case_21.txt AC 96 ms 19388 KiB
01_random_case_22.txt AC 77 ms 15272 KiB
01_random_case_23.txt AC 70 ms 7504 KiB
01_random_case_24.txt AC 66 ms 7648 KiB
01_random_case_25.txt AC 64 ms 7472 KiB
01_random_case_26.txt AC 95 ms 18724 KiB
01_random_case_27.txt AC 80 ms 15716 KiB
01_random_case_28.txt AC 77 ms 9576 KiB
01_random_case_29.txt AC 73 ms 8544 KiB
01_random_case_30.txt AC 76 ms 10208 KiB
02_max_case_01.txt AC 106 ms 22900 KiB
02_max_case_02.txt AC 87 ms 19476 KiB
02_max_case_03.txt AC 84 ms 12036 KiB
02_max_case_04.txt AC 81 ms 10868 KiB
02_max_case_05.txt AC 81 ms 13380 KiB
02_max_case_06.txt AC 144 ms 24116 KiB
02_max_case_07.txt AC 131 ms 21212 KiB
02_max_case_08.txt AC 131 ms 16352 KiB
02_max_case_09.txt AC 110 ms 12320 KiB
02_max_case_10.txt AC 140 ms 15692 KiB
02_max_case_11.txt AC 123 ms 23612 KiB
02_max_case_12.txt AC 102 ms 20384 KiB
02_max_case_13.txt AC 97 ms 13080 KiB
02_max_case_14.txt AC 97 ms 12672 KiB
02_max_case_15.txt AC 104 ms 16456 KiB
02_max_case_16.txt AC 116 ms 24148 KiB
02_max_case_17.txt AC 100 ms 20792 KiB
02_max_case_18.txt AC 97 ms 13968 KiB
02_max_case_19.txt AC 94 ms 13812 KiB
02_max_case_20.txt AC 100 ms 18628 KiB
02_max_case_21.txt AC 124 ms 24720 KiB
02_max_case_22.txt AC 102 ms 19244 KiB
02_max_case_23.txt AC 90 ms 9396 KiB
02_max_case_24.txt AC 86 ms 9000 KiB
02_max_case_25.txt AC 83 ms 9048 KiB
02_max_case_26.txt AC 123 ms 24116 KiB
02_max_case_27.txt AC 105 ms 19964 KiB
02_max_case_28.txt AC 100 ms 11940 KiB
02_max_case_29.txt AC 96 ms 10904 KiB
02_max_case_30.txt AC 101 ms 13112 KiB
03_handmade_01.txt AC 3 ms 3504 KiB
03_handmade_02.txt AC 2 ms 3480 KiB
03_handmade_03.txt AC 99 ms 18556 KiB
03_handmade_04.txt AC 61 ms 7936 KiB
03_handmade_05.txt AC 110 ms 26608 KiB