提出 #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
結果
AC × 2
AC × 75
セット名 テストケース
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