제출 #1227323

#제출 시각아이디문제언어결과실행 시간메모리
1227323jer033Progression (NOI20_progression)C++20
15 / 100
3095 ms7576 KiB
#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 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...