답안 #866121

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
866121 2023-10-25T12:48:04 Z danikoynov The Potion of Great Power (CEOI20_potion) C++14
0 / 100
45 ms 17928 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]};
    }

    exit(0);
    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)
    {
        
        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())
      |                 ~~~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 5720 KB Unexpected end of file - int32 expected
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 5720 KB Unexpected end of file - int32 expected
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 45 ms 17316 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 36 ms 17928 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 6232 KB Unexpected end of file - int32 expected
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 5720 KB Unexpected end of file - int32 expected
2 Halted 0 ms 0 KB -