제출 #1328140

#제출 시각아이디문제언어결과실행 시간메모리
1328140Zone_zoneePilot (NOI19_pilot)C++20
25 / 100
1095 ms1604 KiB
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+10;

int a[N];
struct seg{
    int seg[4*N]{};
    void build(int now, int l, int r){
        if(l == r) return void(seg[now] = a[l]);
        int mid = (l+r)>>1;
        build(now*2, l, mid);
        build(now*2+1, mid+1, r);
        seg[now] = max(seg[now*2], seg[now*2+1]);
    }
    int query(int now, int l, int r, int ql, int qr){
        if(l > r || l > qr || r < ql) return 0;
        if(ql <= l && r <= qr) return seg[now];
        int mid = (l+r)>>1;
        return max(query(now*2, l, mid, ql, qr), query(now*2+1, mid+1, r, ql, qr));
    }
} seg;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n, q;
    cin >> n >> q;
    for(int i = 1; i <= n; ++i) cin >> a[i];
    seg.build(1, 1, n);
    while(q--){
        int x; cin >> x;
        int ans = 0;
        for(int i = 1; i <= n; ++i){
            for(int j = i; j <= n; ++j){
                // if(x == 2) cerr << "dbg : " << seg.query(1, 1, n, i, j) << '\n';
                if(seg.query(1, 1, n, i, j) <= x) ans++;
            }
        }
        cout << ans << '\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...