QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#291263 | #4053. 序列变换 | zlxFTH | 100 ✓ | 173ms | 64188kb | C++14 | 3.2kb | 2023-12-26 09:33:11 | 2023-12-26 09:33:13 |
Judging History
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