답안 #696341

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
696341 2023-02-06T09:15:20 Z dongliu0426 Difference (POI11_roz) C++17
100 / 100
668 ms 32692 KB
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("abm,fma,bmi,bmi2,popcnt,lzcnt")

#include <iostream>
#include <vector>
using namespace std;

const int N = 1e6;

int main() {
  int n;
  scanf("%d", &n);
  static char s[N];
  scanf("%s", s);
  static vector<int> u[N];
  for (int i = 0; i < n; i++)
    u[s[i] - 'a'].push_back(i);
  int ans = 0;
  for (int i = 0; i < 26; i++)
    for (int j = 0; j < 26; j++) {
      if (i == j)
        continue;
      static int t[N + 1];
      int m = 0, l = 0, r = 0;
      while (l < (int) u[i].size() || r < (int) u[j].size())
        if (l == (int) u[i].size())
          t[++m] = -1, r++;
        else if (r == (int) u[j].size())
          t[++m] = +1, l++;
        else if (u[i][l] < u[j][r])
          t[++m] = +1, l++;
        else
          t[++m] = -1, r++;
      int p = 0, c = 0, d = 0, mn = n;
      for (int k = 1; k <= m; k++) {
        c += t[k];
        if (t[k] == -1) {
          for (int k_ = p; k_ < k; k_++)
            mn = min(mn, d += t[k_]);
          p = k;
        }
        ans = max(ans, c - mn);
      }
    }
  printf("%d\n", ans);
  return 0;
}

Compilation message

roz.cpp: In function 'int main()':
roz.cpp:12:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |   scanf("%d", &n);
      |   ~~~~~^~~~~~~~~~
roz.cpp:14:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |   scanf("%s", s);
      |   ~~~~~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 23764 KB Output is correct
2 Correct 12 ms 23752 KB Output is correct
3 Correct 12 ms 23796 KB Output is correct
4 Correct 10 ms 23724 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 23764 KB Output is correct
2 Correct 11 ms 23764 KB Output is correct
3 Correct 12 ms 23772 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 23764 KB Output is correct
2 Correct 12 ms 23728 KB Output is correct
3 Correct 12 ms 23764 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 23764 KB Output is correct
2 Correct 11 ms 23764 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 20 ms 23868 KB Output is correct
2 Correct 11 ms 23764 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 79 ms 24400 KB Output is correct
2 Correct 12 ms 23800 KB Output is correct
3 Correct 15 ms 23824 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 654 ms 30276 KB Output is correct
2 Correct 11 ms 23764 KB Output is correct
3 Correct 374 ms 28532 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 646 ms 30120 KB Output is correct
2 Correct 501 ms 28500 KB Output is correct
3 Correct 139 ms 28700 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 665 ms 30076 KB Output is correct
2 Correct 189 ms 31440 KB Output is correct
3 Correct 155 ms 29660 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 668 ms 29832 KB Output is correct
2 Correct 172 ms 32692 KB Output is correct
3 Correct 168 ms 29460 KB Output is correct