QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#291263#4053. 序列变换zlxFTH100 ✓173ms64188kbC++143.2kb2023-12-26 09:33:112023-12-26 09:33:13

Judging History

你现在查看的是最新测评结果

  • [2023-12-26 09:33:13]
  • 评测
  • 测评结果:100
  • 用时:173ms
  • 内存:64188kb
  • [2023-12-26 09:33:11]
  • 提交

answer

#include <algorithm>
#include <cctype>
#include <cstdio>
#include <set>
#include <vector>

#define debug(...) fprintf(stderr, __VA_ARGS__)

using LL = long long;
const int N = 400000 + 5;

inline int read() {
  int x = 0, f = 1, c;
  while (!isdigit(c = getchar()))
    if (c == '-') f = -1;
  do x = x * 10 + c - '0';
  while (isdigit(c = getchar()));
  return x * f;
}

int n, X, Y;
int a[N], dep[N];
char s[2 * N];
std::vector<int> G[N], P[N];
LL ans;

void dfs(int u) {
  for (auto v : G[u]) {
    dep[v] = dep[u] + 1;
    dfs(v);
  }
}

namespace Sub1 {
std::multiset<int> s;
LL sum;
void solve() {
  for (int i = 1; i <= n; ++i) {
    for (auto v : P[i]) s.insert(a[v]), sum += a[v];
    sum -= *s.rbegin();
    ans += sum;
    s.erase(std::prev(s.end()));
  }  
}
}

namespace Sub2 {
std::multiset<int> s;
LL sum;
void solve() {
  for (int i = 1; i <= n; ++i) {
    for (auto v : P[i]) s.insert(a[v]), sum += a[v];
    ans += sum + LL(*s.begin()) * (s.size() - 2);
    sum -= *s.rbegin();
    s.erase(std::prev(s.end()));
  }
}
}

namespace Sub3 {
std::multiset<int> s;
void try1() {
  LL res = 0;
  for (int i = 1; i <= n; ++i) {
    for (auto v : P[i]) s.insert(a[v]);
    if (s.size() == 1) {
      s.erase(s.begin());
    } else if (i == n - 1) {
      res += *s.begin();
      s.erase(s.begin());
    } else if (s.size() >= 3) {
      int u = *std::next(s.begin());
      res += LL(*s.begin()) * (s.size() - 2) + u;
      s.erase(std::next(s.begin()));
    } else {
      int j = i;
      while (P[j + 1].size() == 1) {
        s.insert(a[P[j + 1][0]]);
        ++j;
      }
      i = j;
      for (auto v : s) res += v;
      int u = *s.begin();
      res -= u;
      s.clear();
      s.insert(u);
    }
  }
  ans = std::min(ans, res);
}
void try2() {
  LL res = 0;
  for (int i = 1; i <= n; ++i) {
    for (auto v : P[i]) s.insert(a[v]);
    if (s.size() == 1) {
      s.erase(s.begin());
    } else if (i == n - 1) {
      res += *s.begin();
      s.erase(s.begin());
    } else if (s.size() >= 3) {
      int u = *std::next(s.begin());
      res += LL(*s.begin()) * (s.size() - 2) + u;
      s.erase(std::next(s.begin()));
    } else {
      int j = i;
      while (P[j + 1].size() == 1) {
        s.insert(a[P[j + 1][0]]);
        ++j;
      }
      i = j;
      for (auto v : s) res += v;
      int u = *s.rbegin();
      res -= u;
      s.clear();
      s.insert(u);
    }
  }
  ans = std::min(ans, res);
}
void solve() {
  ans = 1E18;
  try1();
  try2();
}
}

int main() {
  n = read(), X = read(), Y = read();
  if (!X && !Y) return puts("0"), 0;
  scanf("%s", s + 1);
  for (int i = 1; i <= n; ++i) a[i] = read();
  {
    int tp;
    static int st[N];
    st[tp = 1] = 0;  
    for (int i = 1, cur = 0; i <= 2 * n; ++i) {
      if (s[i] == '(') {
        st[++tp] = ++cur;
      } else {
        G[st[tp - 1]].push_back(st[tp]);
        --tp;
      }
    }
    dfs(0);
    for (int i = 1; i <= n; ++i) P[dep[i]].push_back(i);
  }
  if (X == 0 && Y == 1) Sub1::solve();
  if (X == 1 && Y == 1) Sub2::solve();
  if (X == 1 && Y == 0) Sub3::solve();
  printf("%lld\n", ans);
  return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 4
Accepted
time: 3ms
memory: 27016kb

input:

8 1 0
((((())()()))())
9885387 6516650 9760493 9641422 5202363 4238336 7747794 490028

output:

36405804

result:

ok 1 number(s): "36405804"

Test #2:

score: 4
Accepted
time: 0ms
memory: 27688kb

input:

8 1 0
((((()()())))())
9885387 9641422 7747794 9760493 5202363 6516650 4636916 4238336

output:

51894229

result:

ok 1 number(s): "51894229"

Test #3:

score: 4
Accepted
time: 0ms
memory: 27916kb

input:

8 1 1
(((()())()()))()
9885387 5202363 490028 3368691 9641422 6516650 9760493 4238336

output:

99314759

result:

ok 1 number(s): "99314759"

Test #4:

score: 4
Accepted
time: 161ms
memory: 53536kb

input:

400000 1 0
((((()(()())(())(()((((()(()(()))))))(()()(())()(())(()()((())(()))())(()(()(()(())(())()))(()((()))())((())()()()(()(()(())(()())((())((()(())))((()))(()((()())))))(()(()()((()))())(()()())(((()()))(()(())((())))((()()))(()()(()))))((())(())((())())(()()(()))))((())()(()()()(()()())))(()...

output:

398732254583021874

result:

ok 1 number(s): "398732254583021874"

Test #5:

score: 4
Accepted
time: 113ms
memory: 53892kb

input:

400000 1 1
(()(()())(())(()((((()(()(()))))))(()()(())()(())(()()((())(()))())(()(()(()(())(())()))(()((()))())((())()()()(()(()(())(()())((())((()(())))((()))(()((()())))))(()(()()((()))())(()()())(((()()))(()(())((())))((()()))(()()(()))))((())(())((())())(()()(()))))((())()(()()()(()()())))(()()(...

output:

1277445719345875816

result:

ok 1 number(s): "1277445719345875816"

Test #6:

score: 4
Accepted
time: 3ms
memory: 27524kb

input:

20 1 0
((((((((((((((((()()())))))))))))))())))
9885387 9760493 9641422 3455737 1595369 2520060 5202363 383427 5005212 7513927 4238336 7747794 4702568 490028 5180541 4636916 4089173 4897764 3368691 6516650

output:

67797073

result:

ok 1 number(s): "67797073"

Test #7:

score: 4
Accepted
time: 0ms
memory: 27740kb

input:

20 1 0
(((((((((())()((())))()(()(()))))))())))
8722863 8703136 7513927 3665124 6956430 1979803 5174068 2520060 1595369 4089173 383427 4702568 3368691 6465783 5180541 1021531 3455737 5005212 4897764 1513930

output:

76233193

result:

ok 1 number(s): "76233193"

Test #8:

score: 4
Accepted
time: 0ms
memory: 24732kb

input:

20 1 1
(((((()((())()(((()))))()(()(()))))))())
8722863 5634023 1513930 4897764 8703136 4089173 1021531 383427 4702568 3455737 5180541 6956430 6465783 5005212 7513927 1979803 3665124 5723059 1595369 5174068

output:

314768566

result:

ok 1 number(s): "314768566"

Test #9:

score: 4
Accepted
time: 64ms
memory: 55172kb

input:

350000 0 1
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

26841786325208686

result:

ok 1 number(s): "26841786325208686"

Test #10:

score: 4
Accepted
time: 76ms
memory: 59944kb

input:

400000 0 1
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

28037973526177667

result:

ok 1 number(s): "28037973526177667"

Test #11:

score: 4
Accepted
time: 124ms
memory: 55108kb

input:

400000 0 1
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

178128920485682222

result:

ok 1 number(s): "178128920485682222"

Test #12:

score: 4
Accepted
time: 41ms
memory: 64188kb

input:

400000 0 1
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

81004444

result:

ok 1 number(s): "81004444"

Test #13:

score: 4
Accepted
time: 2ms
memory: 26176kb

input:

2000 1 0
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

11784741323

result:

ok 1 number(s): "11784741323"

Test #14:

score: 4
Accepted
time: 5ms
memory: 28020kb

input:

2000 1 0
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

11784741323

result:

ok 1 number(s): "11784741323"

Test #15:

score: 4
Accepted
time: 2ms
memory: 28040kb

input:

2000 1 0
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

2428581049

result:

ok 1 number(s): "2428581049"

Test #16:

score: 4
Accepted
time: 0ms
memory: 27392kb

input:

2000 1 1
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()(()())((())(()()()))(()()((())()(()()()(((()))))(()(()(()(())())))()((())))(()(()(())))((())(()())(()(())((()))(()(())(()))...

output:

5495819380766

result:

ok 1 number(s): "5495819380766"

Test #17:

score: 4
Accepted
time: 130ms
memory: 59144kb

input:

400000 1 0
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

19998495457

result:

ok 1 number(s): "19998495457"

Test #18:

score: 4
Accepted
time: 141ms
memory: 58368kb

input:

400000 1 0
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

19998783786

result:

ok 1 number(s): "19998783786"

Test #19:

score: 4
Accepted
time: 129ms
memory: 58464kb

input:

400000 1 0
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

19998749017

result:

ok 1 number(s): "19998749017"

Test #20:

score: 4
Accepted
time: 137ms
memory: 58924kb

input:

400000 1 0
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

19998573314

result:

ok 1 number(s): "19998573314"

Test #21:

score: 4
Accepted
time: 130ms
memory: 59144kb

input:

400000 1 0
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

19998540124

result:

ok 1 number(s): "19998540124"

Test #22:

score: 4
Accepted
time: 165ms
memory: 58612kb

input:

400000 1 0
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

1263574956069

result:

ok 1 number(s): "1263574956069"

Test #23:

score: 4
Accepted
time: 172ms
memory: 58380kb

input:

400000 1 0
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

1581722851072

result:

ok 1 number(s): "1581722851072"

Test #24:

score: 4
Accepted
time: 164ms
memory: 58448kb

input:

400000 1 0
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

1243099504352

result:

ok 1 number(s): "1243099504352"

Test #25:

score: 4
Accepted
time: 173ms
memory: 59224kb

input:

400000 1 0
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...

output:

1140371996503

result:

ok 1 number(s): "1140371996503"

Extra Test:

score: 0
Extra Test Passed