fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main(){
  5. int N;
  6. cin >> N;
  7. string s;
  8. cin >> s;
  9. if(N == 1){
  10. cout << 1 << '\n';
  11. exit(0);
  12. }
  13. vector<int> a(N);
  14. for(int i = 0;i < N;i++){
  15. if(s[i] == 'F'){
  16. a[i] = 0;
  17. }else if(s[i] == 'G'){
  18. a[i] = 1;
  19. }else{
  20. a[i] = 2;
  21. }
  22. }
  23. int pref[3][N];
  24. for(int i = 0;i < 3;i++){
  25. for(int j = 0;j < N;j++){
  26. pref[i][j] = (j ? pref[i][j - 1] : 0) + (a[j] == i);
  27. }
  28. }
  29. int Q;
  30. cin >> Q;
  31. int x;
  32. cin >> x >> x;
  33. int ans = 0;
  34.  
  35. for(int i = 0;i < N;i++){
  36. // Can this be good
  37. bool ok = true;
  38.  
  39. int back_b = (i ? pref[(a[i] - 1 + 3) % 3][i - 1] : 0);
  40. int back_g = (i ? pref[(a[i] + 1) % 3][i - 1] : 0);
  41.  
  42.  
  43. int fr_b = pref[(a[i] - 1 + 3) % 3][N - 1];
  44. int fr_g = pref[(a[i] + 1) % 3][N - 1];
  45.  
  46. fr_b -= back_b;
  47. fr_g -= back_g;
  48.  
  49. if(back_b > 0 && back_g == 0) ok = false;
  50. if(fr_b > 0 && fr_g == 0) ok = false;
  51.  
  52.  
  53. if(ok) ans ++;
  54.  
  55.  
  56. }
  57.  
  58. cout << ans << '\n';
  59.  
  60. return 0;
  61. }
Success #stdin #stdout 0.04s 25652KB
stdin
Standard input is empty
stdout
#include <bits/stdc++.h>
using namespace std;

int main(){
	int N;
	cin >> N;
	string s;
	cin >> s;
	if(N == 1){
		cout << 1 << '\n';
		exit(0);
	}
	vector<int> a(N);
	for(int i = 0;i < N;i++){
		if(s[i] == 'F'){
			a[i] = 0;
		}else if(s[i] == 'G'){
			a[i] = 1;
		}else{
			a[i] = 2;
		}
	}
	int pref[3][N];
	for(int i = 0;i < 3;i++){
		for(int j = 0;j < N;j++){
			pref[i][j] = (j ? pref[i][j - 1] : 0) + (a[j] == i);
		}
	}
	int Q;
	cin >> Q;
	int x;
	cin >> x >> x;
	int ans = 0;

	for(int i = 0;i < N;i++){
		// Can this be good
			bool ok = true;

			int back_b =  (i ? pref[(a[i] - 1 + 3) % 3][i - 1] : 0);
			int back_g =  (i ? pref[(a[i] + 1) % 3][i - 1] : 0);


			int fr_b =  pref[(a[i] - 1 + 3) % 3][N - 1];
			int fr_g =  pref[(a[i] + 1) % 3][N - 1];

			fr_b -= back_b;
			fr_g -= back_g;

			if(back_b > 0 && back_g == 0) ok = false;
			if(fr_b > 0 && fr_g == 0) ok = false;
			
		
			if(ok) ans ++;

	
	}

	cout << ans << '\n';

	return 0;
}