답안 #884073

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
884073 2023-12-06T15:30:02 Z vjudge1 Bubble Sort 2 (JOI18_bubblesort2) C++17
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
#define int long long

using namespace std;

int aint[8000 * 4 + 5];
int ain2[50000 * 4 + 2][102];
int lazy[50000 * 4 + 2][102];
const int INF = 1e9;

void update(int nod, int st, int dr, int poz, int val)
{
    if(st == dr)
    {
        aint[nod] += val;
        return;
    }

    int mij = (st + dr) / 2;
    if(poz <= mij) update(nod * 2, st, mij, poz, val);
    else update(nod * 2 + 1, mij + 1, dr, poz, val);
    aint[nod] = max(aint[nod * 2], aint[nod * 2 + 1]);
}

void propagate(int nod, int id)
{
    ain2[nod * 2][id] += lazy[nod][id];
    ain2[nod * 2 + 1][id] += lazy[nod][id];
    lazy[nod * 2][id] += lazy[nod][id];
    lazy[nod * 2 + 1][id] += lazy[nod][id];
    lazy[nod][id] = 0;
}

void update2(int nod, int st, int dr, int le, int ri, int val, int id)
{
    if(le > ri)
        return;

    if(st == le && dr == ri)
    {
        ain2[nod][id] += val;
        lazy[nod][id] += val;
        return;
    }

    propagate(nod, id);
    int mij = (st + dr) / 2;
    update2(nod * 2, st, mij, le, min(ri, mij), val, id);
    update2(nod * 2 + 1, mij + 1, dr, max(le, mij + 1), ri, val, id);
    ain2[nod][id] = max(ain2[nod * 2][id], ain2[nod * 2 + 1][id]);
}


vector<int> countScans(vector<int> a, vector<int> x, vector<int> v)
{
    int n = a.size();
    int q = x.size();
    if(n <= 8000 && q <= 8000)
    {
        int rez = 0;
        for(int i = 0; i < n; i++)
            for(int j = i - 1; j >= 0; j--)
                if(a[j] > a[i])
                    update(1, 1, n, i + 1, 1);
        vector<int> fin;
        for(int i = 0; i < q; i++)
        {
            //cout<<rez<<" zzzz\n";
            for(int j = x[i] + 1; j < n; j++)
            {
                if(a[x[i]] > a[j])
                    update(1, 1, n, j + 1, -1);
                if(v[i] > a[j])
                    update(1, 1, n, j + 1, 1);
            }

            for(int j = x[i] - 1; j >= 0; j--)
            {
                if(a[j] > a[x[i]])
                    update(1, 1, n, x[i] + 1, -1);
                if(a[j] > v[i])
                    update(1, 1, n, x[i] + 1, 1);
            }

            a[x[i]] = v[i];
            fin.push_back(aint[1]);
        }

        return fin;
    }
    else
    {
        for(int i = 1; i <= 100; i++)
            update2(1, 1, n, 1, n, -INF, i);

        for(int i = 0; i < n; i++)
        {
            update2(1, 1, n, i + 1, i + 1, INF, a[i]);
            for(int val = a[i] - 1; val >= 1; val--)
            {
                update2(1, 1, n, i + 2, n, 1, val);
            }
        }

        vector<int> fin;
        for(int i = 0; i < q; i++)
        {
            update2(1, 1, n, x[i] + 1, x[i] + 1, -INF, a[x[i]]);
            update2(1, 1, n, x[i] + 1, x[i] + 1, INF, v[i]);
            for(int val = a[x[i]] - 1; val >= 1; val--)
            {
                update2(1, 1, n, x[i] + 2, n, -1, val);
            }

            for(int val = v[i] - 1; val >= 1; val--)
            {
                update2(1, 1, n, x[i] + 2, n, 1, val);
            }

            int rez = 0;
            for(int j = 1; j <= 100; j++)
                rez = max(rez, ain2[1][j]);
            fin.push_back(rez);
        }

        return fin;
    }

}

/*int main()
{
    int n;
    cin>>n;
    vector<int> read;
    for(int i = 1; i <= n; i++)
    {
        int a;
        cin>>a;
        read.push_back(a);
    }

    vector<int> q1, q2;
    int q;
    cin>>q;
    for(int i = 1; i <= q; i++)
    {
        int a, b;
        cin>>a>>b;
        q1.push_back(a);
        q2.push_back(b);
    }

    vector<int> rez = countScans(read, q1, q2);
    for(auto it : rez)
        cout<<it<<'\n';
    return 0;
}*/

Compilation message

bubblesort2.cpp: In function 'std::vector<long long int> countScans(std::vector<long long int>, std::vector<long long int>, std::vector<long long int>)':
bubblesort2.cpp:60:13: warning: unused variable 'rez' [-Wunused-variable]
   60 |         int rez = 0;
      |             ^~~
/usr/bin/ld: /tmp/cciyOQ6U.o: in function `main':
grader.cpp:(.text.startup+0x181): undefined reference to `countScans(std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status