Submission #1196832

#TimeUsernameProblemLanguageResultExecution timeMemory
1196832sleepntsheepJOIOJI (JOI14_joioji)C++17
100 / 100
40 ms8008 KiB
#include <stdio.h>
#include <map>
#include <tuple>

#define N 200000
#define N_ (N + 1)

char s[N_];
int n, z, cj[N_], co[N_], ci[N_];

std::map<std::tuple<int, int, int>, int> m;

int main() {
    scanf("%d%s", &n, s);

    for (int i = 0; i < n; ++i)
	ci[i + 1] = ci[i] + (s[i] == 'I') * 3,
	cj[i + 1] = cj[i] + (s[i] == 'J') * 3,
	co[i + 1] = co[i] + (s[i] == 'O') * 3;

    for (int i = n - 1; i >= 0; --i) {
	std::tuple<int, int, int> w {i - cj[i], i - co[i], i - ci[i]};

	if (m.count(w) && m[w] - i + 1 > z)
	    z = 1 + m[w] - i;

	std::tuple<int, int, int> v {i - cj[i + 1] + 1, i - co[i + 1] + 1, i - ci[i + 1] + 1};

	if (m.count(v) == 0)
	    m[v] = i;
    }

    printf("%d", z);

    return 0;
}

Compilation message (stderr)

joioji.cpp: In function 'int main()':
joioji.cpp:14:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |     scanf("%d%s", &n, s);
      |     ~~~~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...