Submission #885123

# Submission time Handle Problem Language Result Execution time Memory
885123 2023-12-09T03:07:09 Z catlover Difference (POI11_roz) C++14
80 / 100
588 ms 36876 KB
#include <bits/stdc++.h>

#define file(task) if(fopen(task".inp", "r")) { freopen(task".inp", "r", stdin); freopen(task".out", "w", stdout); }
#define FOR(i, a, b) for(int i = (a), _b = (b); i <= _b; ++i)
#define FORD(i, a, b) for(int i = (a), _b = (b); i >= _b; --i)
#define pb push_back
#define SZ(X) (int)((X).size())

using namespace std;

const int maxN = 1e6;

int N;
string s;
vector<int> id[maxN+5];

void read_input()
{
  cin >> N >> s;
}

void solve()
{
  s = ' ' + s;
  FOR(i, 1, N) id[s[i] - 'a'].pb(i);

  int res = 0;
  FOR(x, 0, 25)
  {
    FOR(y, 0, 25)
    {
      if(SZ(id[x]) * SZ(id[y]) == 0) continue;
      if(x == y) continue;
      vector<int> d {0};
      int j = 0;
      for(int i : id[x])
      {
        while(j < SZ(id[y]) && id[y][j] < i)
        {
          ++j;
          d.pb(-1);
        }
        d.pb(1);
      }
      while(j < SZ(id[y]))
      {
        ++j;
        d.pb(-1);
      }
      int last = 0, mn = 1e9;
      vector<int> f(SZ(d), 0);
      FOR(i, 1, SZ(d) - 1)
      {
        f[i] = f[i - 1] + d[i];
        if(i > 1 && d[i] != d[i - 1])
        {
          FOR(j, last, i - 2) mn = min(mn, f[j]);
          last = i - 1;
        }
        res = max(res, f[i] - mn);
      }
    }
  }
  cout << res;
}

int main()
{
  cin.tie(0)->sync_with_stdio(0);

  file("SSDIFF");

  read_input();
  solve();

  return 0;
}

Compilation message

roz.cpp: In function 'int main()':
roz.cpp:3:56: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    3 | #define file(task) if(fopen(task".inp", "r")) { freopen(task".inp", "r", stdin); freopen(task".out", "w", stdout); }
      |                                                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
roz.cpp:71:3: note: in expansion of macro 'file'
   71 |   file("SSDIFF");
      |   ^~~~
roz.cpp:3:89: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    3 | #define file(task) if(fopen(task".inp", "r")) { freopen(task".inp", "r", stdin); freopen(task".out", "w", stdout); }
      |                                                                                  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
roz.cpp:71:3: note: in expansion of macro 'file'
   71 |   file("SSDIFF");
      |   ^~~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 23896 KB Output is correct
2 Correct 5 ms 23900 KB Output is correct
3 Correct 5 ms 23900 KB Output is correct
4 Correct 5 ms 23900 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 23896 KB Output is correct
2 Correct 5 ms 23900 KB Output is correct
3 Correct 5 ms 23900 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 23896 KB Output is correct
2 Correct 5 ms 23900 KB Output is correct
3 Correct 5 ms 23900 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 23900 KB Output is correct
2 Correct 5 ms 23940 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 24152 KB Output is correct
2 Correct 5 ms 23900 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 65 ms 24412 KB Output is correct
2 Correct 6 ms 23900 KB Output is correct
3 Correct 10 ms 23880 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 588 ms 31912 KB Output is correct
2 Correct 5 ms 23900 KB Output is correct
3 Correct 301 ms 29984 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 575 ms 31680 KB Output is correct
2 Correct 436 ms 30360 KB Output is correct
3 Correct 159 ms 30696 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 580 ms 31692 KB Output is correct
2 Runtime error 70 ms 35712 KB Memory limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 580 ms 31576 KB Output is correct
2 Runtime error 39 ms 36876 KB Memory limit exceeded
3 Halted 0 ms 0 KB -