Submission #424036

#TimeUsernameProblemLanguageResultExecution timeMemory
424036dooweyHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
64 / 100
3070 ms262144 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; #define fi first #define se second #define mp make_pair #define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); const int N = (int)1e6 + 10; vector<int> E[N * 4 + 512]; int X[N]; struct Node{ int mx; int res; }; Node T[N * 4 + 512]; int F(int lim, int id){ int iq = lower_bound(E[id].begin(), E[id].end(), lim) - E[id].begin(); if(iq == 0) return 0; iq -- ; return lim + E[id][iq]; } void build(int node, int cl, int cr){ if(cl == cr){ T[node].mx = X[cl]; E[node].push_back(X[cl]); return ; } int mid = (cl + cr) / 2; build(node * 2, cl, mid); build(node * 2 + 1, mid + 1, cr); int pa = 0; int pb = 0; while(pa < E[node * 2].size() || pb < E[node * 2 + 1].size()){ if(pa < E[node * 2].size() && (pb == E[node * 2 + 1].size() || E[node * 2][pa] < E[node * 2 + 1][pb])){ E[node].push_back(E[node * 2][pa]); pa ++ ; } else{ E[node].push_back(E[node * 2 + 1][pb]); pb ++ ; } } T[node].res = max(T[node * 2].res, T[node * 2 + 1].res); T[node].res = max(T[node].res, F(T[node * 2].mx, node * 2 + 1)); T[node].mx = max(T[node * 2].mx, T[node * 2 + 1].mx); } Node ff; void solve(int node, int cl, int cr, int tl, int tr){ if(node == 1){ ff.mx = -1; ff.res = 0; //return; } if(cr < tl || cl > tr) return; if(cl >= tl && cr <= tr){ if(ff.mx == -1){ ff = T[node]; } else{ ff.res = max(ff.res, T[node].res); ff.res = max(ff.res, F(ff.mx, node)); ff.mx = max(ff.mx, T[node].mx); } return; } int mid = (cl + cr) / 2; solve(node * 2, cl, mid, tl, tr); solve(node * 2 + 1, mid + 1, cr, tl, tr); } int main(){ fastIO; //freopen("in.txt","r",stdin); int n, q; cin >> n >> q; for(int i = 1; i <= n; i ++ ){ cin >> X[i]; } build(1, 1, n); int li, ri; int lq; for(int iq = 1; iq <= q; iq ++ ){ cin >> li >> ri >> lq; solve(1, 1, n, li, ri); if(ff.res > lq){ cout << "0\n"; } else{ cout << "1\n"; } } return 0; }

Compilation message (stderr)

sortbooks.cpp: In function 'void build(int, int, int)':
sortbooks.cpp:44:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |     while(pa < E[node * 2].size() || pb < E[node * 2 + 1].size()){
      |           ~~~^~~~~~~~~~~~~~~~~~~~
sortbooks.cpp:44:41: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |     while(pa < E[node * 2].size() || pb < E[node * 2 + 1].size()){
      |                                      ~~~^~~~~~~~~~~~~~~~~~~~~~~~
sortbooks.cpp:45:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |         if(pa < E[node * 2].size() && (pb == E[node * 2 + 1].size() || E[node * 2][pa] < E[node * 2 + 1][pb])){
      |            ~~~^~~~~~~~~~~~~~~~~~~~
sortbooks.cpp:45:43: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |         if(pa < E[node * 2].size() && (pb == E[node * 2 + 1].size() || E[node * 2][pa] < E[node * 2 + 1][pb])){
      |                                        ~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...