제출 #837046

#제출 시각아이디문제언어결과실행 시간메모리
837046MODDIHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
21 / 100
2344 ms29108 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair typedef long long ll; typedef pair<long long, long long> pll; typedef pair<int,int> pii; typedef vector<long long> vl; typedef vector<int> vi; int n, m; vi arr; int main(){ cin>>n>>m; for(int i = 0; i < n; i++){ int a; cin>>a; arr.pb(a); } bool s = true; if(n <= 1000 && m <= 1000 && s){ while(m--){ int l, r, k; cin>>l>>r>>k; l--; r--; bool can = true; int maxi = -1e9; for(int i = l; i <= r; i++){ if(maxi > arr[i] && maxi + arr[i] > k){ can = false; break; } maxi = max(maxi, arr[i]); } cout<<can<<endl; } } else{ vi pregrada; for(int i = 0; i < n; i++){ int j =i; pregrada.pb(i); while(j + 1 < n && arr[j] <= arr[j+1]){ j++; } if(j == n-1) pregrada.pb(n); i = j; } while(m--){ int l, r, k; cin>>l>>r>>k; l--;r--; int left_border = -1, right_border = -1; int levo = 0, desno = pregrada.size()-1; while(levo <= desno){ int mid = (levo + desno) / 2; if(pregrada[mid] <= l){ left_border = mid; levo = mid + 1; } else desno = mid - 1; } levo = 0; desno = pregrada.size()-1; while(levo <= desno){ int mid = (levo + desno) / 2; if(pregrada[mid] > r){ right_border = mid; desno = mid - 1; } else levo = mid + 1; } // cout<<left_border<<" "<<right_border<<endl; if(abs(left_border - right_border) != 1) cout<<0<<endl; else cout<<1<<endl; } } return 0; }
#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...