#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
int n, h[maxn];
void init(int N, int D, int H[])
{
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 i = 0; i < n; i ++)
{
for (int j = 0; j < U; j ++)
{
int a = edge[i].first, b = edge[i].second;
if (i != a && i != b)
continue;
int v = b;
if (i == b)
v = a;
if (act[i].find(v) == act[i].end())
act[i].insert(v);
else
act[i].erase(v);
}
}
}
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());
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 4 26
*/
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 |
Incorrect |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
5968 KB |
Incorrect |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
40 ms |
17284 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
36 ms |
17072 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
87 ms |
6232 KB |
Incorrect |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
5720 KB |
Incorrect |
2 |
Halted |
0 ms |
0 KB |
- |