fork download
  1. import java.util.*;
  2.  
  3. public class Main {
  4. public static void main(String[] args) {
  5. String s = "LCT";
  6. int n = s.length();
  7.  
  8. long[] preL = new long[n + 2];
  9. long[] preLC = new long[n + 2];
  10. long l = 0, lc = 0, countLCT = 0;
  11.  
  12. for (int i = 0; i < n; ++i) {
  13. char ch = s.charAt(i);
  14. if (ch == 'L') {
  15. l++;
  16. } else if (ch == 'C') {
  17. lc += l;
  18. } else if (ch == 'T') {
  19. countLCT += lc;
  20. }
  21. preL[i + 1] = l;
  22. preLC[i + 1] = lc;
  23. }
  24.  
  25. long[] sufT = new long[n + 5];
  26. long[] sufCT = new long[n + 5];
  27. long t = 0, ct = 0;
  28.  
  29. for (int i = n - 1; i >= 0; --i) {
  30. char ch = s.charAt(i);
  31. if (ch == 'T') {
  32. t++;
  33. } else if (ch == 'C') {
  34. ct += t;
  35. }
  36. sufT[i + 1] = t;
  37. sufCT[i + 1] = ct;
  38. }
  39.  
  40. long answer1 = sufCT[1] + countLCT;
  41. long answer2 = preLC[n] + countLCT;
  42.  
  43. long answer3 = 0;
  44. for (int i = 1; i <= n; ++i) {
  45. answer3 = Math.max(answer3, preL[i] * sufT[i + 1]);
  46. }
  47.  
  48. long finalResult = Math.max(answer1, Math.max(answer2, answer3 + countLCT));
  49. System.out.println(finalResult);
  50. }
  51. }
  52.  
Success #stdin #stdout 0.07s 54528KB
stdin
Standard input is empty
stdout
2