#include <bits/stdc++.h>
using ll = long long;
using namespace std;
ll solve(vector<ll> diff, int l, int r)
{
if ((r-l)<=1)
return r-l+1;
int N = diff.size();
vector<int> barriers;
barriers.push_back(l);
for (int i=l+1; i<=(r-1); i++)
{
if (2*diff[i]-diff[i-1]-diff[i+1])
barriers.push_back(i);
}
barriers.push_back(r);
int k = barriers.size();
int bes = 0;
for (int i=1; i<k; i++)
bes = max(bes, barriers[i]-barriers[i-1]);
bes++;
return bes;
}
int main()
{
int N, Q; cin >> N >> Q;
vector<ll> diff(N);
for (int i=0; i<N; i++)
cin >> diff[i];
vector<ll> ddiff(N);
//ll curr_ans = solve(diff, 0, N-1);
while (Q--)
{
int p; cin >> p;
if (p==2)
{
ll l, r, s, c; cin >> l >> r >> s >> c; l--; r--;
for (ll i=l; i<=r; i++)
diff[i] = (i-l)*c+s;
}
else if (p==3)
{
int l, r; cin >> l >> r; l--; r--;
cout << solve(diff, l, r) << '\n';
}
else
{
ll l, r, s, c; cin >> l >> r >> s >> c; l--; r--;
for (ll i=l; i<=r; i++)
diff[i] += (i-l)*c+s;
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |