This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
import java.util.*;
import java.io.*;
public class miners {
public static void main(String[] args) throws IOException{
BufferedReader f = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new PrintStream(System.out));
n=Integer.parseInt(f.readLine());
char[]atem=f.readLine().toCharArray();
arr=new int[n];
for(int i=0;i<n;i++){
if(atem[i]=='M'){
arr[i]=1;
}
else if(atem[i]=='F'){
arr[i]=2;
}
else{
arr[i]=3;
}
}
int ans=0;
ans=1+recurse(0,-1,-1,arr[0],-1,-1,-1);
int b=1+recurse(0,-1,-1,-1,-1,-1,arr[0]);
System.out.print(Math.max(ans,b));
f.close();
out.close();
}
static int n;
static int[]arr;
static int recurse(int idx,int l1,int l2,int l3,int r1, int r2,int r3){
int max=0;
if(idx==-1+n)return 0;
//choose left
int val=numEqual(l2,l3,arr[idx+1]);
val+=recurse(idx+1,l2,l3,arr[idx+1],r1,r2,r3);
max=Math.max(max,val);
val=numEqual(r2,r3,arr[idx+1]);
val+=recurse(idx+1,l1,l2,l3,r2,r3,arr[idx+1]);
max=Math.max(max,val);
return max;
}
static int numEqual(int a, int b, int c){
if(a==-1 && b==-1 && c==-1)return 0;
if(a==-1 && b==-1)return 1;
if(a==-1){
return b==c?1:2;
}
if(a==b && b==c)
return 1;
if(a==b)
return 2;
if(b==c)
return 2;
if(a==c)return 2;
return 3;
}
}
class pair implements Comparable <pair>{
int num;
int idx;
public int compareTo(pair other){
return num- other.num;
}
pair(int a, int b)
{
num=a;
idx=b;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |