Submission #1335946

#TimeUsernameProblemLanguageResultExecution timeMemory
1335946zhehanHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
0 / 100
3094 ms12192 KiB
#include <bits/stdc++.h>
using namespace std;

vector<int> ft;

void upd(int p, int v) {
  while (p < ft.size()) {
    ft[p] += v;
    p += p & (-p);
  }
}

int query(int p) {
  int sum = 0;
  while (p > 0) {
    sum += ft[p];
    p -= p & (-p);
  }
  return sum;
}

int invquery(int p) { return query(ft.size() - 1) - query(p); }

int main() {
  int n, m;
  cin >> n >> m;
  vector<int> books(n, 0);
  for (int i = 0; i < n; ++i) {
    cin >> books[i];
  }
  int l, r, mood;
  for (int i = 0; i < m; ++i) {
    cin >> l >> r >> mood;
    bool pass = true;
    ft = vector<int>(n + 5, 0);
    for (int j = l - 1; j < r; ++j) {
      if (mood <= books[j]) {
        cout << 0 << '\n';
        pass = false;
        break;
      }
      if (invquery(books[j]) > 0 && invquery(mood - books[j]) > 0) {
        cout << 0 << '\n';
        pass = false;
        break;
      }
      upd(books[j], 1);
    }
    if (pass) {
      cout << 1 << '\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...