Submission #200516

#TimeUsernameProblemLanguageResultExecution timeMemory
200516arnold518JOIOJI (JOI14_joioji)C++14
100 / 100
50 ms6264 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int MAXN = 2e5;

int N;
char S[MAXN+10];

struct tup
{
	int a, b, c;
	bool operator < (const tup &p) const
	{
		if(a!=p.a) return a<p.a;
		if(b!=p.b) return b<p.b;
		return c<p.c;
	}
};
map<tup, int> M;
int ans;

int main()
{
	int i, j;

	scanf("%d%s", &N, S+1);
	int J=0, O=0, I=0;
	M[{0, 0, 0}]=0;
	for(i=1; i<=N; i++)
	{
		if(S[i]=='J') J++;
		else if(S[i]=='O') O++;
		else I++;

		int p, q, r;
		p=J-min({J, O, I});
		q=O-min({J, O, I});
		r=I-min({J, O, I});

		if(M.find({p, q, r})!=M.end()) ans=max(ans, i-M[{p, q, r}]);
		else M[{p, q, r}]=i;
	}
	printf("%d", ans);
}

Compilation message (stderr)

joioji.cpp: In function 'int main()':
joioji.cpp:28:9: warning: unused variable 'j' [-Wunused-variable]
  int i, j;
         ^
joioji.cpp:30:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%s", &N, S+1);
  ~~~~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...