Submission #155996

#TimeUsernameProblemLanguageResultExecution timeMemory
155996ASDF123Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
0 / 100
3097 ms18488 KiB
#include <bits/stdc++.h> //#define int long long #define fr first #define sc second #define all(s) s.begin(), s.end() #define szof(s) (int)s.size() using namespace std; const int N = (int)1e6 + 5; const int INF = 1e9 + 7; const int MOD = (int)1e9 + 7; int tests = 1; int n, l, r, k; int a[N]; int tree[N * 4], pref[N]; void build(int v = 1, int tl = 1, int tr = N) { if (tl == tr) { tree[v] = a[tl]; return; } int mid = tl + tr >> 1; build(v + v, tl, mid); build(v + v + 1, mid + 1, tr); tree[v] = min(tree[v + v], tree[v + v + 1]); } int get(int l, int r, int v = 1, int tl = 1, int tr = N) { if (l <= tl && tr <= r) { return tree[v]; } if (l > tr || tl > r) { return INF; } int mid = tl + tr >> 1; return min(get(l, r, v + v, tl, mid), get(l, r, v + v + 1, mid + 1, tr)); } int bad(int l, int r) { return pref[r - 1] - pref[l - 1]; } void solve() { scanf("%d%d%d", &l, &r, &k); if (k < get(l, r)) { if (bad(l, r)) { puts("1"); } else { puts("0"); } return; } set <int> st; set <int> ::iterator it; bool ok = true; int mn = INF; for (int i = r; i >= l; i--) { if (i == r) { st.insert(a[i]); mn = min(mn, a[i]); continue; } if (mn < a[i]) { it = st.lower_bound(a[i]); it--; if (*it + a[i] > k) { ok = false; break; } } st.insert(a[i]); mn = min(mn, a[i]); } if (ok) { puts("1"); } else { puts("0"); } } main() { scanf("%d%d", &n, &tests); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } build(); for (int i = 1; i <= n; i++) { pref[i] = pref[i - 1] + (a[i] > a[i + 1]); } // for (int i = 1; i <= n; i++) { // cout << pref[i] << " "; // }cout << endl; // // while (1) { // int l, r; // cin >> l >> r; // cout << get(l, r) << endl; // } while (tests--) { solve(); } }

Compilation message (stderr)

sortbooks.cpp: In function 'void build(int, int, int)':
sortbooks.cpp:23:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   int mid = tl + tr >> 1;
             ~~~^~~~
sortbooks.cpp: In function 'int get(int, int, int, int, int)':
sortbooks.cpp:36:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   int mid = tl + tr >> 1;
             ~~~^~~~
sortbooks.cpp: At global scope:
sortbooks.cpp:87:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main() {
      ^
sortbooks.cpp: In function 'void solve()':
sortbooks.cpp:46:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d%d", &l, &r, &k);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~
sortbooks.cpp: In function 'int main()':
sortbooks.cpp:88:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", &n, &tests);
   ~~~~~^~~~~~~~~~~~~~~~~~~~
sortbooks.cpp:90:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &a[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...