QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#19057#2113. Zbalansowane słowaElegia5 188ms115448kbC++174.1kb2022-01-27 21:27:122022-09-06 08:15:28

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-09-06 08:15:28]
  • Judged
  • Verdict: 5
  • Time: 188ms
  • Memory: 115448kb
  • [2022-01-27 21:27:12]
  • Submitted

answer

/*
_/_/_/_/    _/_/_/_/_/  _/_/_/
_/      _/      _/    _/      _/
_/      _/      _/    _/      _/
_/      _/      _/    _/      _/
_/      _/      _/    _/  _/  _/
_/      _/  _/  _/    _/    _/_/
_/_/_/_/      _/_/     _/_/_/_/_/

_/_/_/_/    _/    _/  _/      _/
_/      _/   _/  _/   _/_/  _/_/
_/      _/    _/_/    _/ _/_/ _/
_/      _/     _/     _/  _/  _/
_/      _/    _/_/    _/      _/
_/      _/   _/  _/   _/      _/
_/_/_/_/    _/    _/  _/      _/

_/_/_/_/_/ _/_/_/_/_/ _/_/_/_/_/
    _/         _/     _/
    _/         _/     _/
    _/         _/     _/_/_/_/
    _/         _/     _/
    _/         _/     _/
    _/     _/_/_/_/_/ _/_/_/_/_/

_/_/_/_/_/ _/_/_/_/_/ _/_/_/_/_/
    _/         _/     _/
    _/         _/     _/
    _/         _/     _/_/_/_/
    _/         _/     _/
    _/         _/     _/
    _/     _/_/_/_/_/ _/_/_/_/_/
*/
#include <cassert>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <cctype>

#include <algorithm>
#include <random>
#include <bitset>
#include <queue>
#include <functional>
#include <set>
#include <map>
#include <unordered_map>
#include <vector>
#include <chrono>
#include <iostream>
#include <iomanip>
#include <limits>
#include <numeric>

#define LOG(FMT...) fprintf(stderr, FMT)

using namespace std;

typedef long long ll;
typedef unsigned long long ull;

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

template <class T>
istream& operator>>(istream& is, vector<T>& v) {
  for (T& x : v)
    is >> x;
  return is;
}

template <class T>
ostream& operator<<(ostream& os, const vector<T>& v) {
  if (!v.empty()) {
    os << v.front();
    for (int i = 1; i < v.size(); ++i)
      os << ' ' << v[i];
  }
  return os;
}

const int P = 998244353;

int norm(int x) { return x >= P ? (x - P) : x; }

void add(int& x, int y) { if ((x += y) >= P) x -= P; }

void sub(int& x, int y) { if ((x -= y) < 0) x += P; }

void exGcd(int a, int b, int& x, int& y) {
  if (!b) {
    x = 1;
    y = 0;
    return;
  }
  exGcd(b, a % b, y, x);
  y -= a / b * x;
}

int inv(int a) {
  int x, y;
  exGcd(a, P, x, y);
  return norm(x + P);
}

void fam(int& x, int y, int z) { x = (x + y * (ull)z) % P; }
int quo2(int x) { return ((x & 1) ? (x + P) : x) >> 1; }

const int _ = 300005;

uniform_int_distribution<int> uid(0, P - 1);
int base[26], ord[_][26], dro[26], cnt[26];
char s[_];

int main() {
#ifdef ELEGIA
  freopen("test.in", "r", stdin);
  int nol_cl = clock();
#endif
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  for (int i = 0; i != 26; ++i) base[i] = uid(rng);
  int B = uid(rng);

  cin >> (s + 1);
  int N = strlen(s + 1);
  memset(ord[0], -1, sizeof(ord[0]));
  int hsh = 0;
  for (int i = 1; i <= N; ++i) {
    add(hsh, base[s[i] - 'a']); ++cnt[s[i] - 'a'];
    memcpy(ord[i], ord[i - 1], sizeof(ord[i]));
    int pos = 0; while (ord[i][pos] != s[i] - 'a' && ord[i][pos] != -1) ++pos;
    ord[i][pos] = s[i] - 'a';
    rotate(ord[i], ord[i] + pos, ord[i] + pos + 1);
  }
  memset(dro, -1, sizeof(dro));
  unordered_map<int, int> mp; mp.reserve(N * 26);
  ull ans = 0;
  for (int i = N; i; --i) {
    int myn = 26, mask = 0, bmask = 0;
    for (int j = 0; j != 26; ++j) {
      if (ord[i][j] == -1) break;
      myn = min(myn, ord[i][j]);
      mask |= 1 << ord[i][j];
      add(bmask, base[ord[i][j]]);
      int v = (hsh + (P - cnt[myn]) * (ull)bmask + B * (ull)mask) % P;
      ++mp[v];
    }
    sub(hsh, base[s[i] - 'a']); --cnt[s[i] - 'a'];
    int pos = 0; while (dro[pos] != -1 && dro[pos] != s[i] - 'a') ++pos;
    dro[pos] = s[i] - 'a'; rotate(dro, dro + pos, dro + pos + 1);
    mask = bmask = 0; myn = 26;
    for (int j = 0; j != 26; ++j) {
      if (dro[j] == -1) break;
      myn = min(myn, dro[j]);
      mask |= 1 << dro[j]; add(bmask, base[dro[j]]);
      int v = (hsh + (P - cnt[myn]) * (ull)bmask + B * (ull)mask) % P;
      ans += mp[v];
    }
  }
  cout << ans << '\n';

#ifdef ELEGIA
  LOG("Time: %dms\n", int ((clock()
          -nol_cl) / (double)CLOCKS_PER_SEC * 1000));
#endif
  return 0;
}

詳細信息

Subtask #1:

score: 1
Accepted

Test #1:

score: 1
Accepted
time: 2ms
memory: 3612kb

input:

aabbabcccba

output:

28

result:

ok single line: '28'

Test #2:

score: 0
Accepted
time: 2ms
memory: 3608kb

input:

a

output:

1

result:

ok single line: '1'

Test #3:

score: 0
Accepted
time: 0ms
memory: 3688kb

input:

bc

output:

3

result:

ok single line: '3'

Test #4:

score: 0
Accepted
time: 2ms
memory: 3724kb

input:

bbc

output:

5

result:

ok single line: '5'

Test #5:

score: 0
Accepted
time: 2ms
memory: 3552kb

input:

bcaab

output:

10

result:

ok single line: '10'

Test #6:

score: 0
Accepted
time: 2ms
memory: 3776kb

input:

ccaccaacaa

output:

27

result:

ok single line: '27'

Test #7:

score: 0
Accepted
time: 2ms
memory: 3588kb

input:

bcabaabbcbacbaccccbc

output:

57

result:

ok single line: '57'

Test #8:

score: 0
Accepted
time: 2ms
memory: 3620kb

input:

aaabaaababbaaaabaabb

output:

54

result:

ok single line: '54'

Test #9:

score: 0
Accepted
time: 0ms
memory: 3612kb

input:

cccccccccccccccccccc

output:

210

result:

ok single line: '210'

Test #10:

score: 0
Accepted
time: 2ms
memory: 3700kb

input:

bacacbabccbacabbcabb

output:

70

result:

ok single line: '70'

Test #11:

score: 0
Accepted
time: 2ms
memory: 3620kb

input:

bccaabbaccbaabcacbab

output:

68

result:

ok single line: '68'

Test #12:

score: 0
Accepted
time: 1ms
memory: 3696kb

input:

abbcccaaaabbbbbccccc

output:

65

result:

ok single line: '65'

Subtask #2:

score: 1
Accepted

Test #13:

score: 1
Accepted
time: 2ms
memory: 3800kb

input:

aabbbacbcbbcabababbaaacaaabccabcaaaabccabcbbbcbabaaabaacacbcccabccaacbbcacabbbaaaaaaaabccaabbabcaaa

output:

326

result:

ok single line: '326'

Test #14:

score: 0
Accepted
time: 2ms
memory: 3644kb

input:

cccbcaabccbbcaaaabcbbacccbcbaacbabcacbaccababcabcabaaacbccbaacbcbbabaccabcaaababccbbbcaccabbaacbacba

output:

513

result:

ok single line: '513'

Test #15:

score: 0
Accepted
time: 2ms
memory: 3800kb

input:

cababccabbacbacbcaabcabccbacbabacabccbacbacabacbcbacbaacbabcbcacbaacbcabcbaabcabcbaccabbacbcabacbacc

output:

1125

result:

ok single line: '1125'

Test #16:

score: 0
Accepted
time: 2ms
memory: 3724kb

input:

caacacabaabbbbccbccaabbccbabccbbcbbaaabacaaccbcbcaaccbbaacbaccbbacacbbaaabcbcacababbcacaaccbcbcabbab

output:

506

result:

ok single line: '506'

Test #17:

score: 0
Accepted
time: 2ms
memory: 3648kb

input:

abbcccaaaabbbbbccccccaaaaaaabbbbbbbbcccccccccaaaaaaaaaabbbbbbbbbbbccccccccccccaaaaaaaaaaaaabbbbbbbbb

output:

587

result:

ok single line: '587'

Subtask #3:

score: 1
Accepted

Test #18:

score: 1
Accepted
time: 0ms
memory: 3712kb

input:

cbbbaaccbaaccbbcacaaccabcaaccccbbbaacabcbcabcaccbbbcaacbcbccccbbbcaaaacbacacbaababbbbcbaaaccbcabbccc

output:

330

result:

ok single line: '330'

Test #19:

score: 0
Accepted
time: 2ms
memory: 3720kb

input:

aaabcbbcabacabaaacacbcbcbbacabbaaaaaabbacbacbbbbbcbaabcabcacbaabccbaacabccccbbabaaccbbabbbbbbcabbabc

output:

340

result:

ok single line: '340'

Test #20:

score: 0
Accepted
time: 2ms
memory: 3648kb

input:

bcabacccbababaacbcbbcaacabccbabbaccacacabbbacbaccbcababaccbcabbacacbaaabccacbbacbaabcaccbbbcabaacbcb

output:

726

result:

ok single line: '726'

Test #21:

score: 0
Accepted
time: 0ms
memory: 3640kb

input:

bacabcacbbaaccbbccbaabbccaacbacabbcabcacbabbaacaacbbccbaaccbcabcbbcababcacaacbacbbcaabbccaacbabcacba

output:

764

result:

ok single line: '764'

Subtask #4:

score: 1
Accepted

Test #22:

score: 1
Accepted
time: 3ms
memory: 4204kb

input:

cacabacbcbccbbbbcaccaabcabbbabbcccccccaccaccbacbaabbbcabccaccccaacabaabcacaccbcbcacbcabacccbccccbabbbcacababcbacaccbabccbacbbaaabccbaabcaaaabcaaacacbacabcabcabcabaaaccbbbcacacbbaaacaababaacacbacabcbcaabcbcabbaabcbccabaacaacaacaaacccaabbcaacabaaaccbcbabcbaccababbcbccbaccbbbcbcaaacbccbcabccabcaaaabbbb...

output:

12577

result:

ok single line: '12577'

Test #23:

score: 0
Accepted
time: 3ms
memory: 4340kb

input:

accbcbccccbcbbbaccbbbcccaccabccabccbcbcbcbbbacabaabaaabccacccbccacacacbbbbcccbababaacabaaccbccaccaaabbacbcbbbbababbbcccaaaabbbbbaacacbcaaccacacbcabcaccbbcaabaaccaacacaccabbbccccacacaccccabbcaabaacaacaabcacbccccaaacacbcbbaccaabcabcbbcaacbbcaccbbbaabbabaabbbcaccbaaaccbcabbbbcbaccccbbbbaaababaccacbbbba...

output:

11845

result:

ok single line: '11845'

Test #24:

score: 0
Accepted
time: 3ms
memory: 4384kb

input:

cabcbaabcabccbacababcacbabcbacbcabacbacacbbacabcbacbcacababccababccbacabcbabcaacbacbbcacbabacbcabaccbacabacbabcbaccababccababcabcbcabacbcaabcbaccabcbacbaabcacbbcacbaacbabcbcabaccabbaccabcababccbabaccabacbcbaabcacbacbbcaacbbacbaccabbcacbacababcabcacbacbcabbcabacbcaabcabcbacbcaabcbcacababcabcacbabccab...

output:

839557

result:

ok single line: '839557'

Test #25:

score: 0
Accepted
time: 3ms
memory: 4340kb

input:

babababaabbcbccbcbbcccacaacacababcaccababcbcaacabbcbaccaabbcababbabababbbbccbcccacaacaccacacaccaaccccbbbbcaabaabbbacbabaababbbbaaaccaacaacccabcccbbbbcbccbcccbbbcbcbabbaaaabbaaccaccaacaacaccaaacccaabbabaabbabbbcccccbcbbbbacabacbcbcabacbabbabaaaabbabbacccbbbbbcbbccccbaacacaccacacaccaacbbaaccbaacccaccb...

output:

116531

result:

ok single line: '116531'

Test #26:

score: 0
Accepted
time: 2ms
memory: 4316kb

input:

bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...

output:

2253000

result:

ok single line: '2253000'

Test #27:

score: 0
Accepted
time: 0ms
memory: 4228kb

input:

abbcccaaaabbbbbccccccaaaaaaabbbbbbbbcccccccccaaaaaaaaaabbbbbbbbbbbccccccccccccaaaaaaaaaaaaabbbbbbbbbbbbbbcccccccccccccccaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbccccccccccccccccccaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccc...

output:

81775

result:

ok single line: '81775'

Subtask #5:

score: 1
Accepted

Test #28:

score: 1
Accepted
time: 1ms
memory: 4308kb

input:

ccaaababaabcacacccaaabacaaabaacbcbaabacbcccccbcabcbcccaacbcacbbbcaaaabbcacabbbaacacbabbcaaabbbabcbaabbcbbcccbccaabaccbabccabccacbcbccababcaaabbbbbaacabbbcccccabaaaaacbaabbccccaacbabcbaaaaccbabccaabbaaaabbabbcccacbabcacaaacbacacccacbacacbbbbacbacaabbbcacbaabcababcbabbbaaaabaabaaacabbcccbabbbbbccabcac...

output:

12094

result:

ok single line: '12094'

Test #29:

score: 0
Accepted
time: 3ms
memory: 4100kb

input:

abcbaacaaacabaaacaaaccaabaaaccbcabaabcbcbabbbbcaaabcccccccacabbbcbcbbbaaacaaaaababcccaacbbabcccbbcbacababcbcbaacbbbbcbbcacbcbcaabbaababacccbabccaabcaabccbabccbcaccabbbababbbcabbaacabaaabacbacabbccccccbbccbaccbbbcbbbabbacabccaabbcaaccbaaaaabaacbcbbacbbcbaaabcbbbcaaaaaabccaabccabaabaaaaacbccbbcccbccab...

output:

12080

result:

ok single line: '12080'

Test #30:

score: 0
Accepted
time: 2ms
memory: 4224kb

input:

ccaaacbcbbabaccbabaaaaccbabaabcccabbacbabbaabbbaccccbbcaccbccabbaccbcbcaacbababacbcccaabbabbcbbaccaabcababbabbcccaaccaccaabcacaccabacbbcbababbcaabbccaaaabcccbbcbbcaacbbacabacabccbabbccacbcbabacaabbabaaccbcbcbccababbccbcababcaaaaccbbccaaaabaccbbccabaccaabbcaacbacbababccbccbbabaacbacbcabcaacbbababccab...

output:

146615

result:

ok single line: '146615'

Test #31:

score: 0
Accepted
time: 3ms
memory: 4180kb

input:

acbcabcabbccaabacacbccbababbaabcacabbccacbcbaacbbacbcabcbcaccababacabababccbbcacabcabcacabbcababcacbaccbcaabcabacbcbabcacabcabcabcabcaabbccbaabaccbcabbcabacbacbacbacccaaababcbbccbbacaacbababbcbcccaaabccbacbbacacbabaccbacabacbcbaccaacbcbbbaabcabcaabcabcabbcacccbbbbaacaaccababcacbabcabcabcccaaccbbbaba...

output:

460919

result:

ok single line: '460919'

Test #32:

score: 0
Accepted
time: 2ms
memory: 4232kb

input:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

1503501

result:

ok single line: '1503501'

Subtask #6:

score: 0
Wrong Answer

Test #33:

score: 0
Wrong Answer
time: 8ms
memory: 14468kb

input:

cbbcbacbbaacabcbabcccaccabbcbbbaccccbbccccabcacabacbbcbacacbcacbbcccbbbabbbabbbbacbacabcacabacbaccacaabaaacababaccbbbbccacbabbacabaabbbaaaabcccacccbabbbbacbbcbbbcbbcaacbccaccaaaccbabccbabbacbacbbcacbccbcaacbbbbbccccbaacacabbababaabacbcacbcaacbcacbbbbcbbacbbaaabaaabacbabbccbaccacbbbccacbcccccabbbaaba...

output:

135295

result:

wrong answer 1st lines differ - expected: '135289', found: '135295'

Subtask #7:

score: 0
Wrong Answer

Test #42:

score: 0
Wrong Answer
time: 45ms
memory: 40396kb

input:

acacbccaacbabcbbabcbcbbacbabbbbacccacaacbccbcaacaabaacbcabaccaccccaccbacbccccbaaccbccacccaccbabaccabbbbcccabcccbaaabbabbbbbcbbbcabcabbacacaaacccbacbbbcccabaaabcaabcbabbbcbbacaaccacaaabccbbbcccccccabaccaacabcababcbabaacbcbbabaaaccbccccbaabaccaaaabcabbbacaaabbbacbacaaacbacabbacaabcaaaaccbbaccccacbbaac...

output:

540529

result:

wrong answer 1st lines differ - expected: '540518', found: '540529'

Subtask #8:

score: 0
Wrong Answer

Test #51:

score: 0
Wrong Answer
time: 39ms
memory: 40392kb

input:

cacaccaabcccacaaacbbbabacbcbbcabcbccbcaccbcaabbbbccacccbbbbabcabcbacbacccababaabcbaababcaaaabbacbbbbccbaabcbacacbcbaccacbbcabbabbcaacbbcabbabaccacbbbccaabbbbaccccacabbaaaacbbaabacabccaaaacbcabcacabaaaccccbccbbaaabaaaaacaababccbacbbccabbbacccabbbabbbacaaacaaacaccaccaacbbaaaccbabbcccccababbccbabcaabab...

output:

538560

result:

wrong answer 1st lines differ - expected: '538547', found: '538560'

Subtask #9:

score: 0
Wrong Answer

Test #59:

score: 0
Wrong Answer
time: 186ms
memory: 115104kb

input:

acabcbaaaaacacbaaabbcccbcabcabcbbcabbcacbabccbcaabaacaabbbbacbacbabaccaccbaababcaccbacaaaccbccaacbbaabcbabccacacbacbcbbbccccbaacbcaacbbaaaabcaccbaaacabbcbaabcbcacbbbbabccbccaacbbccacacbacbcababcbacaaacbcccabbcbbbcaacabcbbcbbcccccaabcbccbccabacbbcccacbaccbbabbcbcbaaabaabcabacacbbbaabcccacbbacbcbccbab...

output:

1598792

result:

wrong answer 1st lines differ - expected: '1598274', found: '1598792'

Subtask #10:

score: 0
Wrong Answer

Test #69:

score: 0
Wrong Answer
time: 188ms
memory: 115448kb

input:

aabbaaababbcbcbaccbbaabcabcccccbbcbccccabaacccabbbccccabaabbccbbaabbcbaaacacccbbbaabbcaabcbcbaabaaacacaabccacbabacbcbcbbacbbbcccacabaccbcbcbbbbcaccbabbbacbcccccccbabbcbaacabbbabaaaacbcacacbaabbcbbcbabaacbaabccbcabbabbbbbaaaaaacaacaccacccbaaacabcbbaaaabaccabbabacbbbcabbbbbbbbacccbabbcbaacccccacaaacac...

output:

1461304

result:

wrong answer 1st lines differ - expected: '1461098', found: '1461304'