#734
Platinum IV
문자열 삼각형의 넓이
원문: English
시간 제한
2s
메모리 제한
1024MB
제출
0
정답
0
맞힌 사람
0
정답 비율
0.0%

문제

승현이는 성현이에게 자신이 가장 좋아하는 알고리즘 문제를 설명해 주려 한다. 하지만 성현이는 승현이가 왜 이 문제를 좋아하는지 잘 이해하지 못하고 있다. 승현이는 "자, 이제 '음메'할 시간이야! 누가 '음메'를 하고 싶어? 제발, 난 그냥 알고리즘 문제를 풀고 싶을 뿐이야."라고 말한다.

성현이는 여전히 이해하지 못해서, 승현이가 설명한 내용을 바탕으로 길이가 NN (3N1053 \le N \le 10^5)인 소문자 알파벳으로 이루어진 문자열 s1s2sNs_1 s_2 \ldots s_N을 적었다. 승현이는 세 개의 문자로 이루어진 문자열 ttt2=t3t_2 = t_3이고 t1t2t_1 \neq t_2를 만족하면, 이 문자열을 **"음메"**라고 부른다.

세 인덱스의 순서쌍 (i,j,k)(i, j, k)i<j<ki < j < k를 만족하고, 문자열 sisjsks_i s_j s_k가 "음메"를 형성하면 이 순서쌍은 유효하다고 한다. 이때 이 순서쌍의 (ji)(kj)(j-i)(k-j)이다. (이는 jj에서 90도로 꺾인 삼각형 ijkijk의 넓이를 두 배한 것과 같다.)

성현이는 당신에게 QQ (1Q31041 \le Q \le 3 \cdot 10^4)개의 쿼리를 던진다. 각 쿼리는 두 정수 llrr (1lrN1 \le l \le r \le N, rl+13r-l+1 \ge 3)로 주어지며, lil \le i이고 krk \le r을 만족하는 유효한 순서쌍 (i,j,k)(i, j, k) 중 값의 최댓값을 구해야 한다. 만약 유효한 순서쌍이 존재하지 않는다면 1-1을 출력한다.

이 문제에서 다루는 정수의 값이 매우 클 수 있으므로 64비트 정수 자료형(C/C++의 long long 등)을 사용하는 것을 권장한다.

입력

첫째 줄에 정수 NNQQ가 공백으로 구분되어 주어진다. (3N1053 \le N \le 10^5; 1Q31041 \le Q \le 3 \cdot 10^4)

둘째 줄에 길이가 NN인 문자열 s1s2sNs_1 s_2 \ldots s_N이 주어진다.

이어서 QQ개의 줄에 각 쿼리를 나타내는 두 정수 llrr이 공백으로 구분되어 주어진다. (1lrN1 \le l \le r \le N; rl+13r-l+1 \ge 3)

출력

각 쿼리에 대한 정답을 새로운 줄에 하나씩 출력한다.

예제 입력 1

12 5
abcabbacabac
1 12
2 7
4 8
2 5
3 10

예제 출력 1

28
6
1
-1
12

점수

  • 테스트 케이스 2~3: N,Q50N, Q \le 50
  • 테스트 케이스 4~6: Q=1Q = 1이며, 해당 쿼리는 l=1l = 1, r=Nr = N을 만족한다.
  • 테스트 케이스 7~11: 추가 제약 조건이 없다.
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출
제출 내역이 없습니다.
맞은 사람
아직 맞은 사람이 없습니다.
난이도 투표
Platinum IV1명 투표· 약 1개월 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
제출 내역이 없습니다.