提出 #59632622
ソースコード 拡げる
#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
template<class T>
struct merge_sort_tree{
int n;
vector<vector<T>> x;
merge_sort_tree()=default;
merge_sort_tree(const vector<T> &vec):n((int)vec.size()){
x.resize(n*2);
for(int i=0;i<n;i++)x[n+i]={vec[i]};
for(int i=n-1;i;i--){
merge(x[i*2].begin(),x[i*2].end(),x[i*2+1].begin(),x[i*2+1].end(),back_inserter(x[i]));
}
}
int cntLess(int l,int r,T query)const{
l+=n,r+=n;
int ret=0;
while(l<r){
if(l&1){
ret+=lower_bound(x[l].begin(),x[l].end(),query)-x[l].begin(),l++;
}
if(r&1){
r--,ret+=lower_bound(x[r].begin(),x[r].end(),query)-x[r].begin();
}
l>>=1,r>>=1;
}
return ret;
}
int cntLesseq(int l,int r,T query)const{
l+=n,r+=n;
int ret=0;
while(l<r){
if(l&1){
ret+=upper_bound(x[l].begin(),x[l].end(),query)-x[l].begin(),l++;
}
if(r&1){
r--,ret+=upper_bound(x[r].begin(),x[r].end(),query)-x[r].begin();
}
l>>=1,r>>=1;
}
return ret;
}
int cntMore(int l,int r,T query)const{
int tot=max<int>(0,min<int>(r,n)-max<int>(l,0));
return tot-cntLesseq(l,r,query);
}
int cntMoreeq(int l,int r,T query)const{
int tot=max<int>(0,min<int>(r,n)-max<int>(l,0));
return tot-cntLess(l,r,query);
}
template<class OStream> friend OStream &operator<<(OStream &os,const merge_sort_tree &clt){
os<<'[';
for(int i=0;i<clt.n;i++)os<<clt.x[clt.n+i][0]<<',';
return os<<']';
}
};
int main(){
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
int N,Q;cin>>N>>Q;
vector<int> H(N);for(auto&&e:H)cin>>e;
vector<pair<int,int>> v;
vector<int> t(N,-1e9);
for(int i=N-1;i>=0;i--){
while(v.size()&&v.back().first<H[i]){
t[v.back().second]=i-1;
v.pop_back();
}
v.push_back({H[i],i});
}
merge_sort_tree<int> tr(t);
while(Q--){
int l,r;cin>>l>>r;
l--;
cout<<tr.cntLess(r,N,l)<<endl;
}
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | F - Buildings 2 |
| ユーザ | nouka28 |
| 言語 | C++ 20 (gcc 12.2) |
| 得点 | 550 |
| コード長 | 2322 Byte |
| 結果 | AC |
| 実行時間 | 349 ms |
| メモリ | 40604 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 550 / 550 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt |
| All | 00_sample_00.txt, 00_sample_01.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, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt, 01_test_37.txt, 01_test_38.txt, 01_test_39.txt, 01_test_40.txt, 01_test_41.txt, 01_test_42.txt, 01_test_43.txt, 01_test_44.txt, 01_test_45.txt, 01_test_46.txt, 01_test_47.txt, 01_test_48.txt, 01_test_49.txt, 01_test_50.txt, 01_test_51.txt, 01_test_52.txt, 01_test_53.txt, 01_test_54.txt, 01_test_55.txt, 01_test_56.txt, 01_test_57.txt, 01_test_58.txt, 01_test_59.txt, 01_test_60.txt, 01_test_61.txt, 01_test_62.txt, 01_test_63.txt, 01_test_64.txt, 01_test_65.txt, 01_test_66.txt, 01_test_67.txt, 01_test_68.txt, 01_test_69.txt, 01_test_70.txt, 01_test_71.txt, 01_test_72.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3476 KiB |
| 00_sample_01.txt | AC | 1 ms | 3472 KiB |
| 01_test_00.txt | AC | 1 ms | 3620 KiB |
| 01_test_01.txt | AC | 1 ms | 3384 KiB |
| 01_test_02.txt | AC | 5 ms | 3440 KiB |
| 01_test_03.txt | AC | 4 ms | 3512 KiB |
| 01_test_04.txt | AC | 9 ms | 3464 KiB |
| 01_test_05.txt | AC | 30 ms | 3404 KiB |
| 01_test_06.txt | AC | 216 ms | 3524 KiB |
| 01_test_07.txt | AC | 215 ms | 3644 KiB |
| 01_test_08.txt | AC | 215 ms | 3600 KiB |
| 01_test_09.txt | AC | 217 ms | 3604 KiB |
| 01_test_10.txt | AC | 216 ms | 3588 KiB |
| 01_test_11.txt | AC | 315 ms | 34060 KiB |
| 01_test_12.txt | AC | 318 ms | 38700 KiB |
| 01_test_13.txt | AC | 315 ms | 33112 KiB |
| 01_test_14.txt | AC | 318 ms | 38704 KiB |
| 01_test_15.txt | AC | 307 ms | 30196 KiB |
| 01_test_16.txt | AC | 314 ms | 38608 KiB |
| 01_test_17.txt | AC | 292 ms | 24108 KiB |
| 01_test_18.txt | AC | 315 ms | 38728 KiB |
| 01_test_19.txt | AC | 311 ms | 40600 KiB |
| 01_test_20.txt | AC | 317 ms | 40436 KiB |
| 01_test_21.txt | AC | 315 ms | 40500 KiB |
| 01_test_22.txt | AC | 318 ms | 40436 KiB |
| 01_test_23.txt | AC | 315 ms | 40444 KiB |
| 01_test_24.txt | AC | 310 ms | 40560 KiB |
| 01_test_25.txt | AC | 318 ms | 40432 KiB |
| 01_test_26.txt | AC | 310 ms | 40444 KiB |
| 01_test_27.txt | AC | 317 ms | 40400 KiB |
| 01_test_28.txt | AC | 316 ms | 40444 KiB |
| 01_test_29.txt | AC | 317 ms | 40436 KiB |
| 01_test_30.txt | AC | 314 ms | 40436 KiB |
| 01_test_31.txt | AC | 318 ms | 40180 KiB |
| 01_test_32.txt | AC | 317 ms | 40600 KiB |
| 01_test_33.txt | AC | 320 ms | 40500 KiB |
| 01_test_34.txt | AC | 323 ms | 40556 KiB |
| 01_test_35.txt | AC | 321 ms | 39696 KiB |
| 01_test_36.txt | AC | 323 ms | 40564 KiB |
| 01_test_37.txt | AC | 319 ms | 40604 KiB |
| 01_test_38.txt | AC | 324 ms | 40436 KiB |
| 01_test_39.txt | AC | 330 ms | 40500 KiB |
| 01_test_40.txt | AC | 319 ms | 38792 KiB |
| 01_test_41.txt | AC | 326 ms | 39824 KiB |
| 01_test_42.txt | AC | 327 ms | 40444 KiB |
| 01_test_43.txt | AC | 334 ms | 40560 KiB |
| 01_test_44.txt | AC | 337 ms | 40336 KiB |
| 01_test_45.txt | AC | 314 ms | 38392 KiB |
| 01_test_46.txt | AC | 315 ms | 38756 KiB |
| 01_test_47.txt | AC | 325 ms | 39140 KiB |
| 01_test_48.txt | AC | 349 ms | 40204 KiB |
| 01_test_49.txt | AC | 341 ms | 39712 KiB |
| 01_test_50.txt | AC | 318 ms | 38716 KiB |
| 01_test_51.txt | AC | 320 ms | 38404 KiB |
| 01_test_52.txt | AC | 321 ms | 38792 KiB |
| 01_test_53.txt | AC | 332 ms | 38884 KiB |
| 01_test_54.txt | AC | 311 ms | 39712 KiB |
| 01_test_55.txt | AC | 316 ms | 39564 KiB |
| 01_test_56.txt | AC | 303 ms | 39140 KiB |
| 01_test_57.txt | AC | 313 ms | 39168 KiB |
| 01_test_58.txt | AC | 308 ms | 38792 KiB |
| 01_test_59.txt | AC | 316 ms | 38384 KiB |
| 01_test_60.txt | AC | 309 ms | 38740 KiB |
| 01_test_61.txt | AC | 336 ms | 39944 KiB |
| 01_test_62.txt | AC | 310 ms | 39788 KiB |
| 01_test_63.txt | AC | 332 ms | 39776 KiB |
| 01_test_64.txt | AC | 323 ms | 38952 KiB |
| 01_test_65.txt | AC | 314 ms | 38680 KiB |
| 01_test_66.txt | AC | 315 ms | 38644 KiB |
| 01_test_67.txt | AC | 310 ms | 38604 KiB |
| 01_test_68.txt | AC | 311 ms | 40468 KiB |
| 01_test_69.txt | AC | 311 ms | 39724 KiB |
| 01_test_70.txt | AC | 305 ms | 38764 KiB |
| 01_test_71.txt | AC | 196 ms | 3504 KiB |
| 01_test_72.txt | AC | 196 ms | 3428 KiB |