제출 #537201

#제출 시각아이디문제언어결과실행 시간메모리
537201blueProgression (NOI20_progression)C++17
15 / 100
3061 ms14464 KiB
#include <iostream>
#include <vector>
using namespace std;

using ll = long long;
using vll = vector<ll>;

int main()
{
	int N, Q;
	cin >> N >> Q;

	vll D(1+N);
	for(int i = 1; i <= N; i++) cin >> D[i];

	for(int j = 1; j <= Q; j++)
	{
		int o;
		cin >> o;

		if(o == 1)
		{
			ll L, R, S, C;
			cin >> L >> R >> S >> C;

			for(int i = L; i <= R; i++) 
				D[i] += S + C*(i - L);
		}
		else if(o == 2)
		{
			ll L, R, S, C;
			cin >> L >> R >> S >> C;

			for(int i = L; i <= R; i++)
				D[i] = S + C*(i - L);
		}
		else
		{
			ll L, R;
			cin >> L >> R;

			vll diffs;
			for(int i = L; i < R; i++) diffs.push_back(D[i+1] - D[i]);

			ll res = 0;

			while(!diffs.empty())
			{
				ll v = diffs.back();
				ll curr = 0;
				while(!diffs.empty() && diffs.back() == v)
				{
					curr++;
					diffs.pop_back();
				}
				res = max(res, curr);
			}

			cout << 1+res << '\n';
		}
	}
}
#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...