Submission #1230828

#TimeUsernameProblemLanguageResultExecution timeMemory
1230828poatThe Potion of Great Power (CEOI20_potion)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
#include "grader.cpp"
using namespace std;

const int N = 2e5 + 100;

int n, D, H[N];
int U, A[N], B[N];

void init(int NN, int DD, int HH[]) {
    n = NN;
    D = DD;
    for(int i = 0; i < n; i++)
        H[i] = HH[i];
}

vector<pair<int, int>> t[N];

void upd(int x, int l, int r, int tl, int tr, int a, int b)
{
    // cout << x << ' ' << l << ' ' << r << ' ' << tl << ' ' << tr << ' ' << a << ' ' << b << '\n';
    // getchar();

    if(tl <= l && tr >= r)
    {
        t[x].push_back({a, b});
        t[x].push_back({b, a});
        return;
    }

    if(tl > r || tr < l)
        return;
    
    int m = (l + r) / 2;
    upd(x * 2, l, m, tl, tr, a, b);
    upd(x * 2 + 1, m + 1, r, tl, tr, a, b);
}

vector<int> V1, V2;
vector<int> G1, G2;
void add(int x, int a, int b)
{
    int ind = lower_bound(t[x].begin(), t[x].end(), make_pair(a, 0)) - t[x].begin();
    for(int i = ind; i < t[x].size(); i++)
    {
        if(t[x][i].first != a)
            break;
        G1.push_back(t[x][i].second);
        V1.push_back(H[t[x][i].second]);
    }   
    ind = lower_bound(t[x].begin(), t[x].end(), make_pair(b, 0)) - t[x].begin();
    for(int i = ind; i < t[x].size(); i++)
    {
        if(t[x][i].first != b)
            break;
        G2.push_back(t[x][i].second);
        V2.push_back(H[t[x][i].second]);
    }   
    
}

void get(int x, int l, int r, int ind, int a, int b)
{
    add(x, a, b);

    if(l == r)
        return;
    
    int m = (l + r) / 2;
    if(ind <= m)
        get(x * 2, l, m, ind, a, b);
    else
        get(x * 2 + 1, m + 1, r, ind, a, b);
}

void out(int x, int l, int r)
{
    cout << l << ' ' << r << " == " << '\n';
    for(auto i : t[x])
        cout << i.first << ' ' << i.second << '\n';
    cout << "\n\n";

    if(l == r)
        return;

    int m = (l + r) / 2;
    out(x * 2, l, m);
    out(x * 2 + 1, m + 1, r);
}   

void curseChanges(int u, int AA[], int BB[]) {
    for(int i = 0; i < u; i++)
    {
        A[i + 1] = AA[i];
        B[i + 1] = BB[i];
    }
    U = u;

    map<pair<int, int>, int> mp;
    for(int i = 1; i <= u; i++)
    {
        if(mp[{A[i], B[i]}] != 0)
        {
            int ind = mp[{A[i], B[i]}];
            upd(1, 1, u, ind, i - 1, A[i], B[i]);
            mp[{A[i], B[i]}] = mp[{B[i], A[i]}] = 0;
        }
        else
            mp[{A[i], B[i]}] = mp[{B[i], A[i]}] = i;
    }
    for(auto i : mp)
    {
        if(i.second == 0 || i.first.first > i.first.second)
            continue;
        upd(1, 1, u, i.second, u, i.first.first, i.first.second);
    }

    for(int i = 1; i <= u * 4; i++)
        sort(t[i].begin(), t[i].end());
}

int question(int x, int y, int v) {
    
    V1.clear();
    V2.clear();
    G1.clear();
    G2.clear();


    get(1, 1, U, v, x, y);
    
    sort(V1.begin(), V1.end());
    sort(V2.begin(), V2.end());

    if(V1.empty() || V2.empty())
        return 1e9;

    long long res = 2e9;
    for(auto i : V1)
    {
        int ind = lower_bound(V2.begin(), V2.end(), i) - V2.begin();

        if(ind != V2.size())
            res = min(res, 1ll * V2[ind] - i);
        if(ind)
            res = min(res, 1ll * i - V2[ind - 1]);
    }

    // cout << res << "\n";
    // for(auto i : V1)
    //     cout << i << " ";
    // cout << '\n';
    // for(auto i : V2)
    //     cout << i << ' ';
    // exit(0);

    return res;
}   

Compilation message (stderr)

/usr/bin/ld: /tmp/ccr8MDcY.o: in function `sigH(int)':
grader.cpp:(.text+0x0): multiple definition of `sigH(int)'; /tmp/ccY2k3Vy.o:potion.cpp:(.text+0x0): first defined here
/usr/bin/ld: /tmp/ccr8MDcY.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccY2k3Vy.o:potion.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status