1398F - Controversial Rounds - CodeForces Solution


binary search data structures dp greedy two pointers *2500

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
#define int long long
using namespace std;

const int N = 2000005;

int read()
{
	int f = 1, k = 0;
	char c = getchar();
	while (c < '0' || c > '9')
	{
		if (c == '-')
		{
			f = -1;
		}
		c = getchar();
	}
	while (c >= '0' && c <= '9')
	{
		k = k * 10 + c - '0';
		c = getchar();
	}
	return f * k;
}

int n, m, k, tt, cnt, ans, pre[N][2];

string s;

signed main()
{
	scanf("%d", &n);
	cin >> s;
	for (int i = 0; i < n; i++)
	{
		pre[i + 1][0] = pre[i][0];
		pre[i + 1][1] = pre[i][1];
		if (s[i] == '?')
		{
			continue;
		}
		pre[i + 1][s[i] & 1 ^ 1] = i + 1;
	}
	for (int len = 1; len <= n; len++)
	{
		int p = 0, ans = 0;
		while (p + len <= n)
		{
			if (pre[p + len][0] == pre[p][0] || pre[p + len][1] == pre[p][1])
			{
				p += len;
				ans++;
			}
			else
			{
				p = pre[p + len][pre[p + len][1] < pre[p + len][0]];
			}
		}
		cout << ans << " ";
	}
	return 0;
}

 	   	   			  				 	 			 				 	


Comments

Submit
0 Comments
More Questions

1505H - L BREAK into program
171E - MYSTERIOUS LANGUAGE
630D - Hexagons
1690D - Black and White Stripe
1688D - The Enchanted Forest
1674C - Infinite Replacement
712A - Memory and Crow
1676C - Most Similar Words
1681A - Game with Cards
151C - Win or Freeze
1585A - Life of a Flower
1662A - Organizing SWERC
466C - Number of Ways
1146A - Love "A"
1618D - Array and Operations
1255A - Changing Volume
1710C - XOR Triangle
415C - Mashmokh and Numbers
8A - Train and Peter
591A - Wizards' Duel
1703G - Good Key Bad Key
1705A - Mark the Photographer
1707A - Doremy's IQ
1706B - Making Towers
1325B - CopyCopyCopyCopyCopy
1649C - Weird Sum
1324B - Yet Another Palindrome Problem
525A - Vitaliy and Pie
879A - Borya's Diagnosis
1672B - I love AAAB