Submission #649545

#TimeUsernameProblemLanguageResultExecution timeMemory
649545murad_2005Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
17 / 100
286 ms4292 KiB
#include<bits/stdc++.h> #pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2") #pragma GCC optimize("unroll-loops") #define ll long long #define ld long double #define ull unsigned long long #define ui unsigned int #define eb emplace_back #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define pb push_back #define pf push_front #define pii pair<int, int> #define pil pair<int, ll> #define plli pair<long long, int> #define pdi pair<double, int> #define pldldi pair<ld, pair<ld, int>> #define pdd pair<double, double> #define pid pair<int, double> #define piii pair<int, pair<int, int>> #define pllll pair<long long, long long> #define pllllll pair<ll, pllll> #define INF 2e9 + 5 #define size(v) v.size() #define f first #define s second #define Pi 3.14159265359 using namespace std; const int up = 1e5 + 5; ///Subtask3 int st[up << 2], a[up]; int Merge(bool L, bool R, int posl, int posr){ if(!(L & R)){ return 0; }else{ int k = (posr - posl + 1) / 2; if(a[posl + k - 1] > a[posl + k]){ return 0; } } return 1; } void build(int node, int l, int r){ if(l == r){ st[node] = 1; }else{ int mid = (l + r) / 2; build(node << 1, l, mid), build((node << 1) | 1, mid + 1, r); st[node] = Merge(st[node << 1], st[(node << 1) | 1], l, r); } } int query(int node, int l, int r, int ql, int qr){ if(l > qr || ql > r){ return 1; }else if(ql <= l && r <= qr){ return st[node]; }else{ int mid = (l + r) / 2; int L = query(node << 1, l, mid, ql, qr), R = query((node << 1) | 1, mid + 1, r, ql, qr); return Merge(L, R, ql, qr); } } void Subtask1and2(int n, int m){ for(int i = 1; i <= n; i++){ cin >> a[i]; } while(m--){ int l, r, k, flag = 0; cin >> l >> r >> k; vector<int>v; for(int i = l; i <= r; i++){ v.pb(a[i]); } int Max = -INF; for(int i = 0; i < size(v); i++){ Max = max(Max, v[i]); if(i > 0){ if(Max > v[i] && Max + v[i] > k){ flag = 1; break; } } } cout << (flag ^ 1) << "\n"; } } void Subtask3(int n, int m){ for(int i = 1; i <= n; ++i){ cin >> a[i]; } build(1, 1, n); while(m--){ int l, r, k; cin >> l >> r >> k; cout << query(1, 1, n, l, r) << "\n"; } } void solve(){ int n, m; cin >> n >> m; if(n <= 5000 && m <= 5000){ Subtask1and2(n, m); }else{ Subtask3(n, m); } } int main(){ int t; t = 1; // cin >> t; while(t--){ solve(); } return 0; }

Compilation message (stderr)

sortbooks.cpp: In function 'void Subtask1and2(int, int)':
sortbooks.cpp:84:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |         for(int i = 0; i < size(v); i++){
      |                          ^
#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...