Submission #591626

# Submission time Handle Problem Language Result Execution time Memory
591626 2022-07-07T17:11:10 Z blue Election (BOI18_election) C++17
0 / 100
3 ms 340 KB
#include <iostream>
#include <vector>
using namespace std;

using vi = vector<int>;

const int inf = 1'000'000'000;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	int N;
	cin >> N;

	vi A(1+N);
	for(int i = 1; i <= N; i++)
	{
		char c;
		cin >> c;

		if(c == 'T')
			A[i] = +1;
		else
			A[i] = -1;
	}

	vi p(1+N);
	p[0] = 0;
	for(int i = 1; i <= N; i++)
		p[i] = p[i-1] + A[i];

	vi s(1+N);
	s[N] = 0;
	for(int i = N-1; i >= 0; i--)
		s[i] = s[i+1] + A[i+1];



	int Q;
	cin >> Q;

	for(int q = 1; q <= Q; q++)
	{
		int l, r;
		cin >> l >> r;

		int pmx = -inf;
		for(int i = l-1; i <= r; i++)
		{
			pmx = max(pmx, p[i]);
		}

		int res = 0;


		int currpmax = -inf;
		for(int i = l-1; i <= r; i++)
		{
			currpmax = max(currpmax, p[i]);
			// cerr << i << " : " << s[i] - s[r] << " " << currpmax << '\n';
			// cerr << "maximum occ = " << currpmax - pmx << '\n';
			// c2 = min(c2, max(0, s[i] - s[r]) + currpmax - pmx);



			if(s[i] > s[r])
			{
				// cerr << "! " << s[i]-s[r] << ' ' << (pmx - currpmax) << '\n';
				// c2 = max(c2, (s[i] - s[r]) - (pmx - currpmax));
				res = max(res, (s[i] - s[r]) + currpmax - p[l-1]);
			}
		}

		cout << res << '\n';


	}
}
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -