| 10989 | 2024-05-02 16:44:00 | mraron | Siklóernyőzés | cpp17 | Elfogadva 100/100 | 1.228s | 93312 KiB |
#include<bits/stdc++.h>
using namespace std;
#define LOG(x) cerr<<(#x)<<" = "<<x<<"\n";
int n,q;
int a[200010];
int qL[200010], qR[200010];
void read() {
cin>>n>>q;
for(int i=0;i<n;++i) {
cin>>a[i];
}
for(int i=0;i<q;++i) {
cin>>qL[i]>>qR[i];
}
}
struct node {
int mx, lazy;
node *left,*right;
};
node* build(int L, int R) {
if(L==R){
return new node{0,0,nullptr,nullptr};
}else {
node* res=new node{0,0,build(L, (L+R)/2),build((L+R)/2+1, R)};
return res;
}
}
void push(node* root) {
if(root->lazy>0) {
root->mx+=root->lazy;
if(root->left!=nullptr) {
root->left->lazy+=root->lazy;
}
if(root->right!=nullptr) {
root->right->lazy+=root->lazy;
}
root->lazy=0;
}
}
void range_incr(node *root, int L, int R, int i, int j) {
push(root);
if(R<i || j<L) {
return ;
}
if(i<=L && R<=j) {
root->lazy++;
push(root);
return ;
}
range_incr(root->left, L, (L+R)/2, i, j);
range_incr(root->right, (L+R)/2+1, R, i, j);
root->mx=max(root->left->mx, root->right->mx);
return ;
}
int range_mx(node* root, int L, int R, int i, int j) {
push(root);
if(R<i || j<L) return 0;
if(i<=L && R<=j) return root->mx;
return max(range_mx(root->left, L, (L+R)/2, i, j), range_mx(root->right, (L+R)/2+1, R, i, j));
}
void debug(node* root) {
for(int i=0;i<n;++i) cerr<<range_mx(root, 0,n-1,i,i)<<" ";
cerr<<"\n";
}
void solve() {
stack<int, vector<int>> stL, stR;
a[n]=n+1;
vector<int> toLeft(n,n), toRight(n,n), L(n,-1), R(n,-1), par(n,-1);
for(int i=0, j=n-1;i<n;++i,j--) {
while(!stL.empty() && a[stL.top()]<a[i]) stL.pop();
while(!stR.empty() && a[stR.top()]<a[j]) stR.pop();
if(!stL.empty()) toLeft[i]=stL.top();
if(!stR.empty()) toRight[j]=stR.top();
stL.push(i);stR.push(j);
}
for(int i=0;i<n;++i) {
if(a[toLeft[i]]<a[toRight[i]]) par[i]=toLeft[i], R[toLeft[i]]=i;
else if(a[toLeft[i]]>a[toRight[i]]) par[i]=toRight[i], L[toRight[i]]=i;
}
vector<vector<int>> adj(200010);
int root;
for(int i=0;i<n;++i) {
if(par[i]>=0) adj[par[i]].push_back(i);
else root=i;
}
vector<vector<int>> dp(18, vector<int>(n));
vector<int> lvl(n), eL(n), eR(n); int ind=0;
auto dfs=[&](auto self, int x) -> void {
eL[x]=ind++;
sort(adj[x].begin(), adj[x].end());
for(int i:adj[x]) {
dp[0][i]=x;
lvl[i]=lvl[x]+1;
self(self, i);
}
eR[x]=ind-1;
};
dp[0][root]=root;
dfs(dfs, root);
for(int j=1;j<18;++j)
for(int i=0;i<n;++i) {
dp[j][i]=dp[j-1][dp[j-1][i]];
}
auto lca=[&](int x, int y) -> int {
if(lvl[x]>lvl[y]) swap(x,y);
if(lvl[y]>lvl[x]) {
for(int j=17;j>=0;j--) {
int py=dp[j][y];
if(lvl[py]>lvl[x]) y=py;
}
y=dp[0][y];
}
if(x==y) return y;
for(int j=17;j>=0;j--) {
int px=dp[j][x], py=dp[j][y];
if(px!=py) x=px, y=py;
}
return dp[0][x];
};
vector<int> qs(q), bal(q), jobb(q), mx_ind(q);
for(int i=0;i<q;++i) mx_ind[i]=lca(qL[i]-1, qR[i]-1);
iota(qs.begin(), qs.end(), 0);
auto tree=build(0,n-1);
sort(qs.begin(), qs.end(), [&](int x, int y) {
return qL[x]>qL[y];
});
for(int idx=0,j=n;idx<qs.size();++idx) {
int i=qs[idx];
while(j>=qL[i]) {
j--;
range_incr(tree, 0,n-1, eL[j], eR[j]);
}
if(L[mx_ind[i]]>=0) {
bal[i]=range_mx(tree, 0, n-1, eL[L[mx_ind[i]]], eR[L[mx_ind[i]]])-range_mx(tree, 0, n-1, eL[mx_ind[i]], eL[mx_ind[i]]);
}
}
sort(qs.begin(), qs.end(), [&](int x, int y) {
return qR[x]<qR[y];
});
tree=build(0,n-1);
for(int idx=0,j=0;idx<qs.size();++idx) {
int i=qs[idx];
while(j<qR[i]) {
range_incr(tree, 0,n-1, eL[j], eR[j]);
j++;
}
if(R[mx_ind[i]]>=0) {
jobb[i]=range_mx(tree, 0, n-1, eL[R[mx_ind[i]]], eR[R[mx_ind[i]]])-range_mx(tree, 0, n-1, eL[mx_ind[i]], eL[mx_ind[i]]);
}
}
for(int i=0;i<q;++i) {
cout<<max(bal[i],jobb[i])<<"\n";
}
}
int main() {
ios_base::sync_with_stdio(false);cin.tie(0);
read();
solve();
return 0;
}| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Elfogadva | 6ms | 5092 KiB | ||||
| 2 | Elfogadva | 1.085s | 64256 KiB | ||||
| subtask2 | 5/5 | ||||||
| 3 | Elfogadva | 915ms | 93144 KiB | ||||
| 4 | Elfogadva | 874ms | 93312 KiB | ||||
| 5 | Elfogadva | 890ms | 89540 KiB | ||||
| 6 | Elfogadva | 792ms | 92844 KiB | ||||
| 7 | Elfogadva | 861ms | 84092 KiB | ||||
| 8 | Elfogadva | 619ms | 84580 KiB | ||||
| subtask3 | 13/13 | ||||||
| 9 | Elfogadva | 8ms | 5732 KiB | ||||
| 10 | Elfogadva | 9ms | 5884 KiB | ||||
| 11 | Elfogadva | 8ms | 5936 KiB | ||||
| 12 | Elfogadva | 8ms | 5900 KiB | ||||
| 13 | Elfogadva | 9ms | 5860 KiB | ||||
| 14 | Elfogadva | 8ms | 5860 KiB | ||||
| 15 | Elfogadva | 8ms | 6116 KiB | ||||
| 16 | Elfogadva | 9ms | 6116 KiB | ||||
| 17 | Elfogadva | 8ms | 6136 KiB | ||||
| subtask4 | 10/10 | ||||||
| 18 | Elfogadva | 8ms | 5732 KiB | ||||
| 19 | Elfogadva | 9ms | 5884 KiB | ||||
| 20 | Elfogadva | 8ms | 5936 KiB | ||||
| 21 | Elfogadva | 8ms | 5900 KiB | ||||
| 22 | Elfogadva | 9ms | 5860 KiB | ||||
| 23 | Elfogadva | 8ms | 5860 KiB | ||||
| 24 | Elfogadva | 8ms | 6116 KiB | ||||
| 25 | Elfogadva | 9ms | 6116 KiB | ||||
| 26 | Elfogadva | 8ms | 6136 KiB | ||||
| 27 | Elfogadva | 287ms | 56484 KiB | ||||
| 28 | Elfogadva | 273ms | 56532 KiB | ||||
| 29 | Elfogadva | 289ms | 56524 KiB | ||||
| 30 | Elfogadva | 291ms | 56520 KiB | ||||
| 31 | Elfogadva | 273ms | 56560 KiB | ||||
| 32 | Elfogadva | 273ms | 56552 KiB | ||||
| 33 | Elfogadva | 333ms | 71760 KiB | ||||
| 34 | Elfogadva | 331ms | 71724 KiB | ||||
| 35 | Elfogadva | 326ms | 63464 KiB | ||||
| 36 | Elfogadva | 344ms | 79820 KiB | ||||
| subtask5 | 15/15 | ||||||
| 37 | Elfogadva | 8ms | 5732 KiB | ||||
| 38 | Elfogadva | 9ms | 5884 KiB | ||||
| 39 | Elfogadva | 8ms | 5936 KiB | ||||
| 40 | Elfogadva | 8ms | 5900 KiB | ||||
| 41 | Elfogadva | 9ms | 5860 KiB | ||||
| 42 | Elfogadva | 8ms | 5860 KiB | ||||
| 43 | Elfogadva | 8ms | 6116 KiB | ||||
| 44 | Elfogadva | 9ms | 6116 KiB | ||||
| 45 | Elfogadva | 8ms | 6136 KiB | ||||
| 46 | Elfogadva | 216ms | 13740 KiB | ||||
| 47 | Elfogadva | 216ms | 13720 KiB | ||||
| 48 | Elfogadva | 266ms | 13368 KiB | ||||
| 49 | Elfogadva | 252ms | 13412 KiB | ||||
| 50 | Elfogadva | 300ms | 13028 KiB | ||||
| 51 | Elfogadva | 300ms | 12996 KiB | ||||
| 52 | Elfogadva | 291ms | 13028 KiB | ||||
| 53 | Elfogadva | 294ms | 12944 KiB | ||||
| 54 | Elfogadva | 277ms | 13540 KiB | ||||
| 55 | Elfogadva | 268ms | 13348 KiB | ||||
| 56 | Elfogadva | 277ms | 13412 KiB | ||||
| 57 | Elfogadva | 286ms | 13284 KiB | ||||
| subtask6 | 10/10 | ||||||
| 58 | Elfogadva | 630ms | 63488 KiB | ||||
| 59 | Elfogadva | 647ms | 63360 KiB | ||||
| 60 | Elfogadva | 628ms | 63500 KiB | ||||
| 61 | Elfogadva | 644ms | 63436 KiB | ||||
| 62 | Elfogadva | 633ms | 63548 KiB | ||||
| 63 | Elfogadva | 630ms | 63488 KiB | ||||
| 64 | Elfogadva | 602ms | 79476 KiB | ||||
| 65 | Elfogadva | 523ms | 76300 KiB | ||||
| 66 | Elfogadva | 508ms | 70228 KiB | ||||
| 67 | Elfogadva | 607ms | 84556 KiB | ||||
| subtask7 | 11/11 | ||||||
| 68 | Elfogadva | 8ms | 5732 KiB | ||||
| 69 | Elfogadva | 9ms | 5884 KiB | ||||
| 70 | Elfogadva | 8ms | 5936 KiB | ||||
| 71 | Elfogadva | 8ms | 5900 KiB | ||||
| 72 | Elfogadva | 9ms | 5860 KiB | ||||
| 73 | Elfogadva | 8ms | 5860 KiB | ||||
| 74 | Elfogadva | 8ms | 6116 KiB | ||||
| 75 | Elfogadva | 9ms | 6116 KiB | ||||
| 76 | Elfogadva | 8ms | 6136 KiB | ||||
| 77 | Elfogadva | 287ms | 56484 KiB | ||||
| 78 | Elfogadva | 273ms | 56532 KiB | ||||
| 79 | Elfogadva | 289ms | 56524 KiB | ||||
| 80 | Elfogadva | 291ms | 56520 KiB | ||||
| 81 | Elfogadva | 273ms | 56560 KiB | ||||
| 82 | Elfogadva | 273ms | 56552 KiB | ||||
| 83 | Elfogadva | 333ms | 71760 KiB | ||||
| 84 | Elfogadva | 331ms | 71724 KiB | ||||
| 85 | Elfogadva | 326ms | 63464 KiB | ||||
| 86 | Elfogadva | 344ms | 79820 KiB | ||||
| 87 | Elfogadva | 630ms | 63488 KiB | ||||
| 88 | Elfogadva | 647ms | 63360 KiB | ||||
| 89 | Elfogadva | 628ms | 63500 KiB | ||||
| 90 | Elfogadva | 644ms | 63436 KiB | ||||
| 91 | Elfogadva | 633ms | 63548 KiB | ||||
| 92 | Elfogadva | 630ms | 63488 KiB | ||||
| 93 | Elfogadva | 602ms | 79476 KiB | ||||
| 94 | Elfogadva | 523ms | 76300 KiB | ||||
| 95 | Elfogadva | 508ms | 70228 KiB | ||||
| 96 | Elfogadva | 607ms | 84556 KiB | ||||
| 97 | Elfogadva | 652ms | 64324 KiB | ||||
| 98 | Elfogadva | 621ms | 64396 KiB | ||||
| 99 | Elfogadva | 629ms | 64376 KiB | ||||
| 100 | Elfogadva | 642ms | 64432 KiB | ||||
| 101 | Elfogadva | 638ms | 64344 KiB | ||||
| 102 | Elfogadva | 638ms | 64428 KiB | ||||
| 103 | Elfogadva | 708ms | 80484 KiB | ||||
| 104 | Elfogadva | 672ms | 74104 KiB | ||||
| 105 | Elfogadva | 689ms | 70604 KiB | ||||
| 106 | Elfogadva | 663ms | 81616 KiB | ||||
| subtask8 | 21/21 | ||||||
| 107 | Elfogadva | 7ms | 5232 KiB | ||||
| 108 | Elfogadva | 955ms | 60628 KiB | ||||
| 109 | Elfogadva | 1.1s | 64312 KiB | ||||
| 110 | Elfogadva | 949ms | 64292 KiB | ||||
| 111 | Elfogadva | 1.087s | 64340 KiB | ||||
| 112 | Elfogadva | 902ms | 64340 KiB | ||||
| 113 | Elfogadva | 1.062s | 64332 KiB | ||||
| 114 | Elfogadva | 1.062s | 64256 KiB | ||||
| 115 | Elfogadva | 652ms | 63316 KiB | ||||
| 116 | Elfogadva | 602ms | 63420 KiB | ||||
| 117 | Elfogadva | 648ms | 63488 KiB | ||||
| 118 | Elfogadva | 629ms | 63444 KiB | ||||
| 119 | Elfogadva | 601ms | 63444 KiB | ||||
| 120 | Elfogadva | 621ms | 63444 KiB | ||||
| 121 | Elfogadva | 958ms | 64212 KiB | ||||
| 122 | Elfogadva | 871ms | 64256 KiB | ||||
| subtask9 | 15/15 | ||||||
| 123 | Elfogadva | 7ms | 5232 KiB | ||||
| 124 | Elfogadva | 955ms | 60628 KiB | ||||
| 125 | Elfogadva | 915ms | 93144 KiB | ||||
| 126 | Elfogadva | 874ms | 93312 KiB | ||||
| 127 | Elfogadva | 890ms | 89540 KiB | ||||
| 128 | Elfogadva | 792ms | 92844 KiB | ||||
| 129 | Elfogadva | 861ms | 84092 KiB | ||||
| 130 | Elfogadva | 619ms | 84580 KiB | ||||
| 131 | Elfogadva | 8ms | 5732 KiB | ||||
| 132 | Elfogadva | 9ms | 5884 KiB | ||||
| 133 | Elfogadva | 8ms | 5936 KiB | ||||
| 134 | Elfogadva | 8ms | 5900 KiB | ||||
| 135 | Elfogadva | 9ms | 5860 KiB | ||||
| 136 | Elfogadva | 8ms | 5860 KiB | ||||
| 137 | Elfogadva | 8ms | 6116 KiB | ||||
| 138 | Elfogadva | 9ms | 6116 KiB | ||||
| 139 | Elfogadva | 8ms | 6136 KiB | ||||
| 140 | Elfogadva | 287ms | 56484 KiB | ||||
| 141 | Elfogadva | 273ms | 56532 KiB | ||||
| 142 | Elfogadva | 289ms | 56524 KiB | ||||
| 143 | Elfogadva | 291ms | 56520 KiB | ||||
| 144 | Elfogadva | 273ms | 56560 KiB | ||||
| 145 | Elfogadva | 273ms | 56552 KiB | ||||
| 146 | Elfogadva | 333ms | 71760 KiB | ||||
| 147 | Elfogadva | 331ms | 71724 KiB | ||||
| 148 | Elfogadva | 326ms | 63464 KiB | ||||
| 149 | Elfogadva | 344ms | 79820 KiB | ||||
| 150 | Elfogadva | 216ms | 13740 KiB | ||||
| 151 | Elfogadva | 216ms | 13720 KiB | ||||
| 152 | Elfogadva | 266ms | 13368 KiB | ||||
| 153 | Elfogadva | 252ms | 13412 KiB | ||||
| 154 | Elfogadva | 300ms | 13028 KiB | ||||
| 155 | Elfogadva | 300ms | 12996 KiB | ||||
| 156 | Elfogadva | 291ms | 13028 KiB | ||||
| 157 | Elfogadva | 294ms | 12944 KiB | ||||
| 158 | Elfogadva | 277ms | 13540 KiB | ||||
| 159 | Elfogadva | 268ms | 13348 KiB | ||||
| 160 | Elfogadva | 277ms | 13412 KiB | ||||
| 161 | Elfogadva | 286ms | 13284 KiB | ||||
| 162 | Elfogadva | 630ms | 63488 KiB | ||||
| 163 | Elfogadva | 647ms | 63360 KiB | ||||
| 164 | Elfogadva | 628ms | 63500 KiB | ||||
| 165 | Elfogadva | 644ms | 63436 KiB | ||||
| 166 | Elfogadva | 633ms | 63548 KiB | ||||
| 167 | Elfogadva | 630ms | 63488 KiB | ||||
| 168 | Elfogadva | 602ms | 79476 KiB | ||||
| 169 | Elfogadva | 523ms | 76300 KiB | ||||
| 170 | Elfogadva | 508ms | 70228 KiB | ||||
| 171 | Elfogadva | 607ms | 84556 KiB | ||||
| 172 | Elfogadva | 652ms | 64324 KiB | ||||
| 173 | Elfogadva | 621ms | 64396 KiB | ||||
| 174 | Elfogadva | 629ms | 64376 KiB | ||||
| 175 | Elfogadva | 642ms | 64432 KiB | ||||
| 176 | Elfogadva | 638ms | 64344 KiB | ||||
| 177 | Elfogadva | 638ms | 64428 KiB | ||||
| 178 | Elfogadva | 708ms | 80484 KiB | ||||
| 179 | Elfogadva | 672ms | 74104 KiB | ||||
| 180 | Elfogadva | 689ms | 70604 KiB | ||||
| 181 | Elfogadva | 663ms | 81616 KiB | ||||
| 182 | Elfogadva | 1.1s | 64312 KiB | ||||
| 183 | Elfogadva | 949ms | 64292 KiB | ||||
| 184 | Elfogadva | 1.087s | 64340 KiB | ||||
| 185 | Elfogadva | 902ms | 64340 KiB | ||||
| 186 | Elfogadva | 1.062s | 64332 KiB | ||||
| 187 | Elfogadva | 1.062s | 64256 KiB | ||||
| 188 | Elfogadva | 652ms | 63316 KiB | ||||
| 189 | Elfogadva | 602ms | 63420 KiB | ||||
| 190 | Elfogadva | 648ms | 63488 KiB | ||||
| 191 | Elfogadva | 629ms | 63444 KiB | ||||
| 192 | Elfogadva | 601ms | 63444 KiB | ||||
| 193 | Elfogadva | 621ms | 63444 KiB | ||||
| 194 | Elfogadva | 958ms | 64212 KiB | ||||
| 195 | Elfogadva | 871ms | 64256 KiB | ||||
| 196 | Elfogadva | 984ms | 80204 KiB | ||||
| 197 | Elfogadva | 1.148s | 80208 KiB | ||||
| 198 | Elfogadva | 1.059s | 79080 KiB | ||||
| 199 | Elfogadva | 1.052s | 72660 KiB | ||||
| 200 | Elfogadva | 1.087s | 72512 KiB | ||||
| 201 | Elfogadva | 1.218s | 70912 KiB | ||||
| 202 | Elfogadva | 1.008s | 68864 KiB | ||||
| 203 | Elfogadva | 1.228s | 68052 KiB | ||||
| 204 | Elfogadva | 1.116s | 67412 KiB | ||||
| 205 | Elfogadva | 970ms | 67156 KiB | ||||