Submission #866119

# Submission time Handle Problem Language Result Execution time Memory
866119 2023-10-25T12:47:11 Z danikoynov The Potion of Great Power (CEOI20_potion) C++14
17 / 100
3000 ms 17480 KB
#include<bits/stdc++.h>

using namespace std;
    


const int maxn = 1e5 + 10;
int n, h[maxn];

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

const int maxq = 50010;

pair < int, int > edge[maxq];
unordered_set < int > act[maxn];
int u;
void curseChanges(int U, int A[], int B[]) 
{
    u = U;
    for (int i = 0; i < U; i ++) 
    {
        edge[i] = {A[i], B[i]};
    }


    for (int j = 0; j < U; j ++)
    {
        int a = edge[j].first, b = edge[j].second;
        if (act[a].find(b) == act[a].end())
        {
            act[a].insert(b);    
            act[b].insert(a);
        }
        else
        {
            act[a].erase(b);
            act[b].erase(a);
        }
    }
    
}

int question(int x, int y, int v) 
{
    if (v == u)
    {
        assert(act[x].size() <= 500 && act[y].size() <= 500);
        vector < int > hx, hy;
        for (int cur : act[x])
            hx.push_back(h[cur]);
        for (int cur : act[y])
            hy.push_back(h[cur]);

        sort(hx.begin(), hx.end());
        sort(hy.begin(), hy.end());
        ///cout << "here " << hx.size() << " " << hy.size() << endl;
        int ans = 1e9;
        int pt = 0;
        for (int i = 0; i < hx.size(); i ++)
        {
            while(pt < hy.size() && hy[pt] <= hx[i])
                pt ++;

            if (pt != 0)
                ans = min(ans, abs(hx[i] - hy[pt - 1]));
            if (pt != hy.size())
                ans = min(ans, abs(hx[i] - hy[pt]));
        }
        return ans;
    }
    set < int > sx, sy;

    for (int i = 0; i < v; i ++)
    {
        int a = edge[i].first;
        int b = edge[i].second;

        if (a == x)
        {
            if (sx.find(b) == sx.end())
                sx.insert(b);
            else
                sx.erase(b);
        }
        
        if (b == x)
        {
            if (sx.find(a) == sx.end())
                sx.insert(a);
            else
                sx.erase(a);
        }

        if (a == y)
        {
            if (sy.find(b) == sy.end())
                sy.insert(b);
            else
                sy.erase(b);
        }
        
        if (b == y)
        {
            if (sy.find(a) == sy.end())
                sy.insert(a);
            else
                sy.erase(a);
        }
    }

    if (sx.empty() && sy.empty())
        return 1e9;

    int ans = 1e9;
    for (int a : sx)
        for (int b : sy)
            ans = min(ans, abs(h[a] - h[b]));
    
    return ans;
    
}
/**
6 5 11 4
2 42 1000 54 68 234
0 1
2 0
3 4
3 5
3 5
1 3
5 3
0 5
3 0
1 3
3 5
0 3 11
*/

Compilation message

potion.cpp: In function 'int question(int, int, int)':
potion.cpp:66:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |         for (int i = 0; i < hx.size(); i ++)
      |                         ~~^~~~~~~~~~~
potion.cpp:68:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |             while(pt < hy.size() && hy[pt] <= hx[i])
      |                   ~~~^~~~~~~~~~~
potion.cpp:73:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   73 |             if (pt != hy.size())
      |                 ~~~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 5720 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 5976 KB Output is correct
2 Correct 3 ms 5976 KB Output is correct
3 Correct 3 ms 5976 KB Output is correct
4 Correct 11 ms 7052 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 40 ms 17376 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 36 ms 17480 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 370 ms 7768 KB Output is correct
2 Correct 583 ms 6744 KB Output is correct
3 Correct 2764 ms 6232 KB Output is correct
4 Execution timed out 3100 ms 7256 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 5720 KB Output is correct
2 Correct 4 ms 5976 KB Output is correct
3 Correct 3 ms 5976 KB Output is correct
4 Correct 3 ms 5976 KB Output is correct
5 Correct 11 ms 7052 KB Output is correct
6 Runtime error 40 ms 17376 KB Execution killed with signal 11
7 Halted 0 ms 0 KB -