# |
제출 시각 |
아이디 |
문제 |
언어 |
결과 |
실행 시간 |
메모리 |
1037852 |
2024-07-29T09:13:40 Z |
김은성(#10980) |
Tourism (JOI23_tourism) |
C++17 |
|
94 ms |
10832 KB |
#include <bits/stdc++.h>
using namespace std;
vector<int> graph[100009];
int a[100009], tree[1<<18], tree2[1<<18];
void settree(int v, int l, int r){
if(l==r)
tree[v] = a[l];
else{
int mid = (l+r)/2;
settree(2*v, l, mid);
settree(2*v+1, mid+1, r);
tree[v] = min(tree[2*v], tree[2*v+1]);
}
}
int query(int v, int l, int r, int s, int e){
if(s<=l && r<=e)
return tree[v];
if(e<l || r<s)
return 1234124323;
int mid = (l+r)/2;
return min(query(2*v, l, mid, s, e), query(2*v+1, mid+1, r, s, e));
}
void settree2(int v, int l, int r){
if(l==r)
tree2[v] = a[l];
else{
int mid = (l+r)/2;
settree2(2*v, l, mid);
settree2(2*v+1, mid+1, r);
tree2[v] = max(tree2[2*v], tree2[2*v+1]);
}
}
int query2(int v, int l, int r, int s, int e){
if(s<=l && r<=e)
return tree2[v];
if(e<l || r<s)
return -1234124323;
int mid = (l+r)/2;
return max(query2(2*v, l, mid, s, e), query2(2*v+1, mid+1, r, s, e));
}
int main(){
int n, m, q, i, u, v;
scanf("%d %d %d", &n, &m, &q);
for(i=0; i<n-1; i++){
scanf("%d %d", &u, &v);
graph[u].push_back(v);
graph[v].push_back(u);
}
for(i=1; i<=m; i++){
scanf("%d", &a[i]);
}
settree(1, 1, m);
settree2(1,1,m);
for(i=0; i<q; i++){
scanf("%d %d", &u, &v);
printf("%d\n", query2(1, 1, m, u, v) - query(1,1, m,u,v)+1);
}
return 0;
}
Compilation message
tourism.cpp: In function 'int main()':
tourism.cpp:44:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
44 | scanf("%d %d %d", &n, &m, &q);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
tourism.cpp:46:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
46 | scanf("%d %d", &u, &v);
| ~~~~~^~~~~~~~~~~~~~~~~
tourism.cpp:51:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
51 | scanf("%d", &a[i]);
| ~~~~~^~~~~~~~~~~~~
tourism.cpp:56:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
56 | scanf("%d %d", &u, &v);
| ~~~~~^~~~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
4956 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
4956 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
4956 KB |
Output is correct |
2 |
Correct |
1 ms |
4956 KB |
Output is correct |
3 |
Correct |
2 ms |
5072 KB |
Output is correct |
4 |
Correct |
76 ms |
7244 KB |
Output is correct |
5 |
Correct |
69 ms |
9300 KB |
Output is correct |
6 |
Correct |
60 ms |
9552 KB |
Output is correct |
7 |
Correct |
94 ms |
10580 KB |
Output is correct |
8 |
Correct |
94 ms |
10576 KB |
Output is correct |
9 |
Correct |
94 ms |
10732 KB |
Output is correct |
10 |
Correct |
94 ms |
10576 KB |
Output is correct |
11 |
Correct |
94 ms |
10832 KB |
Output is correct |
12 |
Correct |
90 ms |
10324 KB |
Output is correct |
13 |
Correct |
83 ms |
10320 KB |
Output is correct |
14 |
Correct |
83 ms |
10324 KB |
Output is correct |
15 |
Correct |
31 ms |
9376 KB |
Output is correct |
16 |
Correct |
69 ms |
10324 KB |
Output is correct |
17 |
Correct |
75 ms |
6300 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
4956 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
4956 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
4956 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |