#include<bits/stdc++.h>
using namespace std;
const long long inf = (long long) 1e18 + 10;
const int inf1 = (int) 1e9 + 10;
// #define int long long
#define ll long long
#define dbl long double
#define endl '\n'
#define sc second
#define fr first
#define mp make_pair
#define pb push_back
#define all(x) x.begin(), x.end()
const int maxn = 2e5+10;
int n, a[maxn], idord[maxn];
vector<pair<int,int>> ord;
vector<pair<int,int>> g[maxn];
vector<pair<int,vector<int>>> frds[maxn];
const int BC = 1;
void init(int N, int D, int H[]) {
n = N;
for(int i = 0; i < n; i++) {
ord.pb(mp(H[i],i));
}
sort(all(ord));
for(int i = 0; i < n; i++) {
idord[ord[i].sc] = i;
a[i] = ord[i].fr;
}
}
void curseChanges(int U, int A[], int B[]) {
for(int i = 0; i < U; i++) {
int u = idord[A[i]];
int v = idord[B[i]];
g[u].pb(mp(i+1,v));
g[v].pb(mp(i+1,u));
}
for(int i = 0; i < n; i++) {
set<int> st;
int cnt = 0;
frds[i].pb(mp(0,vector<int>{}));
for(auto X : g[i]) {
int j = X.sc;
int id = X.fr;
if(st.count(j)) st.erase(j);
else st.insert(j);
if(++cnt == BC || g[i].back().fr == id) {
frds[i].pb(mp(id,vector<int>{}));
for(auto x : st) {
frds[i].back().sc.pb(x);
}
cnt = 0;
}
}
}
}
int question(int x, int y, int v) {
x = idord[x];
y = idord[y];
vector<int> vcx;
vcx = lower_bound(all(frds[x]),mp(v,vector<int>{}))->sc;
vector<int> vcy;
vcy = lower_bound(all(frds[y]),mp(v,vector<int>{}))->sc;
if(vcx.size() == 0) return 1000000000;
if(vcy.size() == 0) return 1000000000;
int i = 0;
int j = 0;
int ans = inf1;
while(i != vcx.size() && j != vcy.size()) {
ans = min(ans, abs(a[vcx[i]]-a[vcy[j]]));
if(a[vcx[i]] < a[vcy[j]]) {
//increase i
i++;
}
else {
j++;
}
}
return ans;
}
Compilation message
potion.cpp: In function 'int question(int, int, int)':
potion.cpp:81:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
81 | while(i != vcx.size() && j != vcy.size()) {
| ~~^~~~~~~~~~~~~
potion.cpp:81:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
81 | while(i != vcx.size() && j != vcy.size()) {
| ~~^~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
5 ms |
9680 KB |
Incorrect |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
14 ms |
20108 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
266 ms |
110588 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
227 ms |
110732 KB |
Execution killed with signal 6 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
29 ms |
24596 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
5 ms |
9680 KB |
Incorrect |
2 |
Halted |
0 ms |
0 KB |
- |