#include<iostream>
#include<set>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
typedef long long ll;
struct Interval{
int h,l,r;
};
bool cmp(Interval&a,Interval&b){
return a.h<b.h;
}
int u,n;
int heights[100000];
vector<Interval>intervals[100000];
int get_closest(vector<Interval>&a,vector<Interval>&b,int day){
int res=1e9;
auto i=a.begin();
auto j=b.begin();
while(i!=a.end()&&j!=b.end()){
while(i!=a.end()&&(day<=i->l||i->r<day))
i++;
while(j!=b.end()&&(day<=j->l||j->r<day))
j++;
if(i==a.end()||j==b.end())
break;
res=min(res,abs(i->h-j->h));
if(i!=a.end()&&i->h<=j->h)
i++;
else if(j!=b.end()&&j->h<=i->h)
j++;
}
return res;
}
void init(int N, int D, int H[]) {
n=N;
for(int i=0;i<n;i++)
heights[i]=H[i];
}
void curseChanges(int U, int A[], int B[]){
u=U;
map<pair<int,int>,int>conns;
for(int day=0;day<U;day++){
int a=A[day],b=B[day];
if(a>b)
swap(a,b);
if(conns.find({a,b})==conns.end()){
conns[{a,b}]=day;
}else{
Interval interval;
interval.l=conns[{a,b}];
interval.r=day;
interval.h=heights[a];
intervals[b].push_back(interval);
interval.h=heights[b];
intervals[a].push_back(interval);
conns.erase({a,b});
}
}
for(auto i:conns){
int a=i.first.first;
int b=i.first.second;
Interval interval;
interval.l=i.second;
interval.r=u;
interval.h=heights[a];
intervals[b].push_back(interval);
interval.h=heights[b];
intervals[a].push_back(interval);
}
for(int i=0;i<n;i++)
sort(intervals[i].begin(),intervals[i].end(),cmp);
}
int question(int x, int y, int v) {
return get_closest(intervals[x],intervals[y],v);
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
2640 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
2768 KB |
Output is correct |
2 |
Correct |
2 ms |
2768 KB |
Output is correct |
3 |
Correct |
2 ms |
2768 KB |
Output is correct |
4 |
Correct |
10 ms |
3492 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
220 ms |
25436 KB |
Output is correct |
2 |
Correct |
249 ms |
25416 KB |
Output is correct |
3 |
Correct |
234 ms |
7980 KB |
Output is correct |
4 |
Correct |
330 ms |
17416 KB |
Output is correct |
5 |
Correct |
253 ms |
24960 KB |
Output is correct |
6 |
Correct |
715 ms |
13684 KB |
Output is correct |
7 |
Correct |
256 ms |
13384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
243 ms |
25468 KB |
Output is correct |
2 |
Correct |
508 ms |
8524 KB |
Output is correct |
3 |
Correct |
302 ms |
13848 KB |
Output is correct |
4 |
Correct |
407 ms |
13636 KB |
Output is correct |
5 |
Correct |
215 ms |
24956 KB |
Output is correct |
6 |
Correct |
410 ms |
13528 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
25 ms |
3792 KB |
Output is correct |
2 |
Correct |
35 ms |
2972 KB |
Output is correct |
3 |
Correct |
122 ms |
2924 KB |
Output is correct |
4 |
Correct |
183 ms |
3428 KB |
Output is correct |
5 |
Correct |
145 ms |
3704 KB |
Output is correct |
6 |
Correct |
32 ms |
3792 KB |
Output is correct |
7 |
Correct |
436 ms |
3096 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
2640 KB |
Output is correct |
2 |
Correct |
3 ms |
2768 KB |
Output is correct |
3 |
Correct |
2 ms |
2768 KB |
Output is correct |
4 |
Correct |
2 ms |
2768 KB |
Output is correct |
5 |
Correct |
10 ms |
3492 KB |
Output is correct |
6 |
Correct |
220 ms |
25436 KB |
Output is correct |
7 |
Correct |
249 ms |
25416 KB |
Output is correct |
8 |
Correct |
234 ms |
7980 KB |
Output is correct |
9 |
Correct |
330 ms |
17416 KB |
Output is correct |
10 |
Correct |
253 ms |
24960 KB |
Output is correct |
11 |
Correct |
715 ms |
13684 KB |
Output is correct |
12 |
Correct |
256 ms |
13384 KB |
Output is correct |
13 |
Correct |
243 ms |
25468 KB |
Output is correct |
14 |
Correct |
508 ms |
8524 KB |
Output is correct |
15 |
Correct |
302 ms |
13848 KB |
Output is correct |
16 |
Correct |
407 ms |
13636 KB |
Output is correct |
17 |
Correct |
215 ms |
24956 KB |
Output is correct |
18 |
Correct |
410 ms |
13528 KB |
Output is correct |
19 |
Correct |
25 ms |
3792 KB |
Output is correct |
20 |
Correct |
35 ms |
2972 KB |
Output is correct |
21 |
Correct |
122 ms |
2924 KB |
Output is correct |
22 |
Correct |
183 ms |
3428 KB |
Output is correct |
23 |
Correct |
145 ms |
3704 KB |
Output is correct |
24 |
Correct |
32 ms |
3792 KB |
Output is correct |
25 |
Correct |
436 ms |
3096 KB |
Output is correct |
26 |
Correct |
313 ms |
8604 KB |
Output is correct |
27 |
Correct |
429 ms |
13900 KB |
Output is correct |
28 |
Correct |
405 ms |
20456 KB |
Output is correct |
29 |
Correct |
332 ms |
17308 KB |
Output is correct |
30 |
Correct |
729 ms |
13708 KB |
Output is correct |
31 |
Correct |
1130 ms |
8420 KB |
Output is correct |
32 |
Correct |
679 ms |
13576 KB |
Output is correct |