Submission details
Task:Hiitdromes
Sender:Makkara
Submission time:2025-11-08 14:57:56 +0200
Language:C++ (C++17)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.01 sdetails
#4ACCEPTED0.01 sdetails
#5ACCEPTED0.01 sdetails
#6ACCEPTED0.01 sdetails
#7ACCEPTED0.01 sdetails
#8ACCEPTED0.01 sdetails
#9ACCEPTED0.01 sdetails
#10ACCEPTED0.01 sdetails
#11ACCEPTED0.01 sdetails
#12ACCEPTED0.01 sdetails
#13ACCEPTED0.01 sdetails
#14ACCEPTED0.03 sdetails
#15ACCEPTED0.04 sdetails
#16ACCEPTED0.02 sdetails
#17ACCEPTED0.02 sdetails
#18ACCEPTED0.02 sdetails
#19ACCEPTED0.03 sdetails
#20ACCEPTED0.03 sdetails
#21ACCEPTED0.03 sdetails

Code

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

long long p = 1000000007;

long long power(long long x, long long n) {
  if(n == 0) return (1 % p);
  long long xx = power(x, n/2);
  xx = (xx * xx) % p;
  if(n%2==1) xx = (xx * x) % p;
  return xx;
}

int n;
string s;

int dp[1010][1010];

bool ok(char c) {
  return (c == 'I' || c == 'H' || c == 'T');
}

int memo(int i, int j) {
  if(j-i + 1 == 0) return 0;
  if(j < i) return p;
  if(dp[i][j] != -1) return dp[i][j];
  if(i == j) return !ok(s[i]);
  int ans = min(memo(i+1,j)+1, memo(i,j-1)+1);
  if(ok(s[i]) && s[i] == s[j]) ans = min(ans, memo(i+1,j-1));
  if(ok(s[i])) {
    ans = min(ans, memo(i+1, j) + 1);
    ans = min(ans, memo(i+1, j-1) + 1);
  }
  if(ok(s[j])) {
    ans = min(ans, memo(i, j-1) + 1);
    ans = min(ans, memo(i+1, j-1) + 1);
  }
  ans = min(ans, memo(i+1, j-1) + 2);
  return dp[i][j] = ans;
}

int main() {

  cin >> n >> s;
  memset(dp, -1, sizeof dp);
  cout << memo(0, n-1) << endl;
  
  return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
6
HEITTO

correct output
3

user output
3

Test 2

Verdict: ACCEPTED

input
1
I

correct output
0

user output
0

Test 3

Verdict: ACCEPTED

input
1
A

correct output
1

user output
1

Test 4

Verdict: ACCEPTED

input
1
O

correct output
1

user output
1

Test 5

Verdict: ACCEPTED

input
1
Z

correct output
1

user output
1

Test 6

Verdict: ACCEPTED

input
10
HHTTHITTIH

correct output
2

user output
2

Test 7

Verdict: ACCEPTED

input
10
TTAHTHHAHT

correct output
3

user output
3

Test 8

Verdict: ACCEPTED

input
10
BFUJMZSMZJ

correct output
10

user output
10

Test 9

Verdict: ACCEPTED

input
10
WAZGWJNVGK

correct output
10

user output
10

Test 10

Verdict: ACCEPTED

input
100
HIIIIHHHHHHTIHHHHIIIHHTITTHTTT...

correct output
24

user output
24

Test 11

Verdict: ACCEPTED

input
100
TAHAIAITAIHHHITAHAHHIITTHAITTH...

correct output
34

user output
34

Test 12

Verdict: ACCEPTED

input
100
EBARMESYLCNFAXNWYCWXSSCNXVWPDS...

correct output
100

user output
100

Test 13

Verdict: ACCEPTED

input
100
ELTWGCNSAJXAXHACYSDJHRPZYMWXAE...

correct output
87

user output
87

Test 14

Verdict: ACCEPTED

input
1000
TIHTTTTHTTITIITTIITIHIHTHTTIII...

correct output
222

user output
222

Test 15

Verdict: ACCEPTED

input
1000
ITTITAHHAHTHIAAAIIHITIAHITHHIH...

correct output
342

user output
342

Test 16

Verdict: ACCEPTED

input
1000
WVEPBCKVGYOAJVJSCEFXYAGNSOWZVL...

correct output
1000

user output
1000

Test 17

Verdict: ACCEPTED

input
1000
FINBOIBDJSFERQEWBVYROECPSOESGJ...

correct output
888

user output
888

Test 18

Verdict: ACCEPTED

input
1000
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...

correct output
1000

user output
1000

Test 19

Verdict: ACCEPTED

input
1000
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH...

correct output
0

user output
0

Test 20

Verdict: ACCEPTED

input
1000
IIIIIIIIIIIIIIIIIIIIIIIIIIIIII...

correct output
0

user output
0

Test 21

Verdict: ACCEPTED

input
1000
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT...

correct output
0

user output
0