제출 #1335963

#제출 시각아이디문제언어결과실행 시간메모리
1335963itslqHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
17 / 100
3094 ms39568 KiB
#include "bits/stdc++.h"
using namespace std;

#define int long long

const int INF = 1e12;

int sz;
vector<int> fenwick;

void update(int n, int v) {
    for (; n <= sz; n += n & -n) fenwick[n] = max(fenwick[n], v);
}

int query(int n) {
    int ans = INT_MIN;
    for (; n; n -= n & -n) ans = max(ans, fenwick[n]);
    return ans;
}


signed main() {
    int N, Q, l, r, k;
    cin >> N >> Q;

    vector<int> W(N), A, B;
    for (int i = 0; i < N; i++) cin >> W[i];

    A = B = W;
    sort(B.begin(), B.end());
    B.erase(unique(B.begin(), B.end()), B.end());
    for (int i = 0; i < N; i++) A[i] = lower_bound(B.begin(), B.end(), W[i]) - B.begin();

    while (Q--) {
        cin >> l >> r >> k;
        l--, r--;

        sz = B.size();
        fenwick = vector<int>(sz + 1, INT_MIN);

        bool possible = true;

        for (int i = l; i <= r; i++) {
            update(sz - A[i], W[i]);
            if (i != l) {
                if (query(sz - A[i] - 1) + W[i] > k) {
                    possible = false;
                    break;
                }
            }
        }

        cout << (possible ? "1\n" : "0\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...