提出 #62116381
ソースコード 拡げる
// LUOGU_RID: 200588712
#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10,maxq = 3e5 + 10,maxm = 5e5 + 10;
int n,m,q;
int L[maxn],R[maxn];
int p[maxq];
int res[maxm];
int min_val[maxm << 2],max_val[maxm << 2],tag[maxm << 2];
void pushdown(int i){
tag[i * 2] += tag[i]; tag[i * 2 + 1] += tag[i];
min_val[i * 2] += tag[i]; min_val[i * 2 + 1] += tag[i];
max_val[i * 2] += tag[i]; max_val[i * 2 + 1] += tag[i];
tag[i] = 0;
}
void pushup(int i){
min_val[i] = min_val[i * 2];
max_val[i] = max_val[i * 2 + 1];
}
void build(int i,int l,int r){
if(l == r){
min_val[i] = l; max_val[i] = r;
return;
}
int mid = (l + r) / 2;
build(i * 2,l,mid);
build(i * 2 + 1,mid + 1,r);
pushup(i);
}
int find_min(int i,int l,int r,int x){
if(l == r) return l;
if(tag[i] > 0) pushdown(i);
int mid = (l + r) / 2;
if(max_val[i * 2] >= x) return find_min(i * 2,l,mid,x);
else if(max_val[i * 2 + 1] >= x) return find_min(i * 2 + 1,mid + 1,r,x);
else return -1;
}
int find_max(int i,int l,int r,int x){
if(l == r) return l;
if(tag[i] > 0) pushdown(i);
int mid = (l + r) / 2;
if(min_val[i * 2 + 1] <= x) return find_max(i * 2 + 1,mid + 1,r,x);
else if(min_val[i * 2] <= x) return find_max(i * 2,l,mid,x);
else return -1;
}
void update(int i,int l,int r,int fl,int fr){
if(fl <= l && r <= fr){
tag[i] ++;
min_val[i] ++; max_val[i] ++;
return;
}
if(tag[i] > 0) pushdown(i);
int mid = (l + r) / 2;
if(fl <= mid) update(i * 2,l,mid,fl,fr);
if(mid < fr) update(i * 2 + 1,mid + 1,r,fl,fr);
pushup(i);
}
void _export(int i,int l,int r){
if(l == r){
res[l] = min_val[i];
return;
}
if(tag[i] > 0) pushdown(i);
int mid = (l + r) / 2;
_export(i * 2,l,mid);
_export(i * 2 + 1,mid + 1,r);
}
int main(){
scanf("%d",&n);
for(int i = 1;i <= n;i ++){
scanf("%d %d",&L[i],&R[i]);
}
scanf("%d",&q);
for(int i = 1;i <= q;i ++){
scanf("%d",&p[i]);
m = max(m,p[i]);
}
build(1,1,m);
for(int i = 1;i <= n;i ++){
int fl = find_min(1,1,m,L[i]),fr = find_max(1,1,m,R[i]);
if(fl > 0 && fr > 0) update(1,1,m,fl,fr);
}
_export(1,1,m);
for(int i = 1;i <= q;i ++){
printf("%d\n",res[p[i]]);
}
return 0;
}
提出情報
| 提出日時 |
|
| 問題 |
F - Rated Range |
| ユーザ |
ACQian |
| 言語 |
C++ 20 (gcc 12.2) |
| 得点 |
525 |
| コード長 |
2492 Byte |
| 結果 |
AC |
| 実行時間 |
267 ms |
| メモリ |
20832 KiB |
コンパイルエラー
Main.cpp: In function ‘int main()’:
Main.cpp:77:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
77 | scanf("%d",&n);
| ~~~~~^~~~~~~~~
Main.cpp:79:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
79 | scanf("%d %d",&L[i],&R[i]);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~
Main.cpp:81:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
81 | scanf("%d",&q);
| ~~~~~^~~~~~~~~
Main.cpp:83:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
83 | scanf("%d",&p[i]);
| ~~~~~^~~~~~~~~~~~
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
525 / 525 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_00.txt |
AC |
1 ms |
3788 KiB |
| 00_sample_01.txt |
AC |
11 ms |
17892 KiB |
| 00_sample_02.txt |
AC |
9 ms |
17064 KiB |
| 01_test_00.txt |
AC |
12 ms |
17992 KiB |
| 01_test_01.txt |
AC |
12 ms |
17988 KiB |
| 01_test_02.txt |
AC |
11 ms |
17956 KiB |
| 01_test_03.txt |
AC |
11 ms |
17984 KiB |
| 01_test_04.txt |
AC |
110 ms |
19404 KiB |
| 01_test_05.txt |
AC |
253 ms |
20752 KiB |
| 01_test_06.txt |
AC |
208 ms |
19868 KiB |
| 01_test_07.txt |
AC |
259 ms |
20704 KiB |
| 01_test_08.txt |
AC |
230 ms |
20000 KiB |
| 01_test_09.txt |
AC |
253 ms |
20600 KiB |
| 01_test_10.txt |
AC |
105 ms |
19208 KiB |
| 01_test_11.txt |
AC |
261 ms |
20704 KiB |
| 01_test_12.txt |
AC |
141 ms |
19576 KiB |
| 01_test_13.txt |
AC |
256 ms |
20636 KiB |
| 01_test_14.txt |
AC |
161 ms |
19292 KiB |
| 01_test_15.txt |
AC |
257 ms |
20772 KiB |
| 01_test_16.txt |
AC |
33 ms |
18180 KiB |
| 01_test_17.txt |
AC |
255 ms |
20692 KiB |
| 01_test_18.txt |
AC |
181 ms |
19588 KiB |
| 01_test_19.txt |
AC |
267 ms |
20608 KiB |
| 01_test_20.txt |
AC |
133 ms |
20664 KiB |
| 01_test_21.txt |
AC |
133 ms |
20660 KiB |
| 01_test_22.txt |
AC |
128 ms |
18156 KiB |
| 01_test_23.txt |
AC |
124 ms |
17848 KiB |
| 01_test_24.txt |
AC |
219 ms |
20820 KiB |
| 01_test_25.txt |
AC |
228 ms |
20596 KiB |
| 01_test_26.txt |
AC |
233 ms |
20832 KiB |
| 01_test_27.txt |
AC |
239 ms |
20600 KiB |
| 01_test_28.txt |
AC |
3 ms |
6248 KiB |
| 01_test_29.txt |
AC |
8 ms |
13804 KiB |
| 01_test_30.txt |
AC |
1 ms |
3628 KiB |
| 01_test_31.txt |
AC |
11 ms |
18112 KiB |
| 01_test_32.txt |
AC |
2 ms |
4536 KiB |