Submission #649535

#TimeUsernameProblemLanguageResultExecution timeMemory
649535murad_2005Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
8 / 100
99 ms9060 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 bool st[up << 2]; bool Merge(bool L, bool R, int posl, int posr, vector<int>&a){ if(!L || !R){ return false; }else{ if(a[posl] > a[posr]){ return false; }else{ return true; } } } void build(int node, int l, int r, vector<int>&a){ if(l == r){ st[node] = true; }else{ int mid = (l + r) / 2; build(node << 1, l, mid, a), build((node << 1) | 1, mid + 1, r, a); st[node] = Merge(st[node << 1], st[(node << 1) | 1], mid, mid + 1, a); } } bool query(int node, int l, int r, int ql, int qr, vector<int>&a){ if(l > qr || ql > r){ return 1; }else if(ql <= l && r <= qr){ return st[node]; }else{ int mid = (l + r) / 2; bool L = query(node << 1, l, mid, ql, qr, a), R = query((node << 1) | 1, mid + 1, r, ql, qr, a); return Merge(L, R, mid, mid + 1, a); } } void Subtask1and2(int n, int m, vector<int>&a){ 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, vector<int>&a){ build(1, 1, n, a); while(m--){ int l, r, k; cin >> l >> r >> k; cout << query(1, 1, n, l, r, a) << "\n"; } } void solve(){ int n, m; cin >> n >> m; vector<int>a(n + 1); for(int i = 1; i <= n; i++){ cin >> a[i]; } if(n <= 1000 && m <= 1000){ Subtask1and2(n, m, a); }else{ Subtask3(n, m, a); } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int t; t = 1; // cin >> t; while(t--){ solve(); } return 0; }

Compilation message (stderr)

sortbooks.cpp: In function 'void Subtask1and2(int, int, std::vector<int>&)':
sortbooks.cpp:82:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |         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...