제출 #1254378

#제출 시각아이디문제언어결과실행 시간메모리
1254378chikien2009Bubble Sort 2 (JOI18_bubblesort2)C++20
100 / 100
1079 ms38624 KiB
#include <bits/stdc++.h>
#include "bubblesort2.h"

using namespace std;

// void setup()
// {
// #ifndef ONLINE_JUDGE
//     freopen("test.inp", "r", stdin); 
//     freopen("test.out", "w", stdout);
// #endif
//     ios_base::sync_with_stdio(0);
//     cin.tie(0);
//     cout.tie(0);
// }

int n, tree[4000000], rem[4000000];  
pair<int, int> p[1000000];

inline void Update(int ind, int l, int r, int x, int y, int v)
{
    if (y < x || r < x || y < l)
    {
        return;
    }
    if (x <= l && r <= y)
    {
        rem[ind] += v;
        tree[ind] += v;
        return;
    }
    int m = (l + r) >> 1;
    Update(ind << 1, l, m, x, y, v);
    Update(ind << 1 | 1, m + 1, r, x, y, v);
    tree[ind] = max(tree[ind << 1], tree[ind << 1 | 1]) + rem[ind];
}

vector<int> countScans(vector<int> A, vector<int> X, vector<int> V)
{
    vector<int> res;
    for (int i = 0; i < A.size(); ++i)
    {
        p[n++] = {A[i], i};
    }
    for (int i = 0; i < V.size(); ++i)
    {
        p[n++] = {V[i], X[i]};
    }
    sort(p, p + n);
    n = unique(p, p + n) - p;
    for (int i = 0; i < A.size(); ++i)
    {
        A[i] = lower_bound(p, p + n, make_pair(A[i], i)) - p + 1;
        Update(1, 1, n, A[i], A[i], i);
        Update(1, 1, n, A[i] + 1, n, -1);
    }
    for (int i = 0; i < V.size(); ++i)
    {
        V[i] = lower_bound(p, p + n, make_pair(V[i], X[i])) - p + 1;
        Update(1, 1, n, A[X[i]], A[X[i]], -X[i]);
        Update(1, 1, n, A[X[i]] + 1, n, 1);
        Update(1, 1, n, V[i], V[i], X[i]);
        Update(1, 1, n, V[i] + 1, n, -1);
        A[X[i]] = V[i];
        res.push_back(tree[1]);
    }
    return res;
}

// int main()
// {
//     setup();

//     return 0;
// }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...