Submission #813591

#TimeUsernameProblemLanguageResultExecution timeMemory
813591danikoynovProgression (NOI20_progression)C++14
15 / 100
3092 ms5956 KiB
#include<bits/stdc++.h> #define endl '\n' using namespace std; typedef long long ll; void speed() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } const int maxn = 3e5 + 10; struct node { int left_val, right_val; int left_len, right_len; int longest; node() { left_val = right_val = 0; left_len = 0; right_len = 0; longest = 0; } }; int n, q; ll d[maxn], b[maxn]; void solve() { cin >> n >> q; for (int i = 1; i <= n; i ++) cin >> d[i], b[i] = d[i] - d[i - 1]; for (int i = 1; i <= q; i ++) { int type, l, r, s, c; cin >> type >> l >> r; if (type == 1) { cin >> s >> c; for (int j = l; j <= r; j ++) { d[j] += s + (j - l) * c; b[j] += c; } b[l] = d[l] - d[l - 1]; b[r + 1] = d[r + 1] - d[r]; } else if (type == 2) { cin >> s >> c; for (int j = l; j <= r; j ++) { d[j] = s + (j - l) * c; b[j] = c; } b[l] = d[l] - d[l - 1]; b[r + 1] = d[r + 1] - d[r]; } else { if (l == r) { cout << 1 << endl; continue; } int len = 1, ans = 0; for (int j = l + 2; j <= r; j ++) { if (b[j] == b[j - 1]) len ++; else { ans = max(ans, len); len = 1; } } ans = max(ans, len); cout << ans + 1 << endl; } /**for (int j = 1; j <= n; j ++) cout << d[j] << " "; cout << endl;*/ } } int main() { speed(); solve(); 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...