ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#214977 | #2037. a | nodgd | 100 | 1319ms | 82124kb | C++11 | 2.2kb | 2024-11-25 18:58:56 | 2024-11-25 23:00:49 |
answer
#include <bits/stdc++.h>
using namespace std;
const int BUFFER_SIZE = 1 << 20;
char rb[BUFFER_SIZE], *rp = rb, *rt = rb;
inline char read_char() {
return rp == rt ? (rt = rb + fread(rb, 1, BUFFER_SIZE, stdin), rp = rb, *rp ++) : *rp ++;
}
inline int read_int() {
int x = 0;
char ch = read_char(), flag = 0;
while (ch != '-' && (ch < '0' || ch > '9')) {
ch = read_char();
}
if (ch == '-') {
flag = 1;
ch = read_char();
}
for (x = 0; ch >= '0' && ch <= '9'; ch = read_char()) {
x = x * 10 + (ch - '0');
}
return flag ? -x : x;
}
inline int read_string(char* s) {
char* s0 = s;
for (char ch = read_char(); ch > ' '; ch = read_char()) {
*s ++ = ch;
}
return s - s0;
}
char wb[BUFFER_SIZE], *wp = wb;
inline void write_flush() {
fwrite(wb, 1, wp - wb, stdout);
wp = wb;
}
inline void write_char(char c) {
*wp ++ = c;
if (wp == wb + BUFFER_SIZE) {
write_flush();
}
}
inline void write_int(int x) {
if (x == 0) {
write_char('0');
} else if (x < 0) {
write_char('-');
x = -x;
}
static char b[32], i;
for (i = 1; x; i ++) {
b[i] = x % 10 + '0';
x /= 10;
}
for (i --; i; i --) {
write_char(b[i]);
}
}
const int MAX_N = 1000000 + 5;
int N, Q;
char a[MAX_N];
int f[22][MAX_N], lg2[MAX_N];
int main() {
N = read_string(a + 1);
for (int i = 2; i <= N + 1; i ++) {
lg2[i] = lg2[i >> 1] + 1;
}
for (int i = 1; i <= N; i ++) {
f[0][i] = f[0][i - 1] + (a[i] == '(' ? 1 : -1);
}
for (int j = 1; j <= lg2[N]; j ++) {
int *f0 = f[j - 1], *f1 = f[j], k = 1 << j - 1;
for (int i = N - (1 << j) + 1; i >= 0; i --) {
f1[i] = min(f0[i], f0[i + k]);
}
}
for (Q = read_int(); Q --; ) {
int l = read_int() - 1, r = read_int();
int j = lg2[r - l + 1];
int t = min(f[j][l], f[j][r - (1 << j) + 1]);
int x = max(f[0][l] - t, 0);
int y = max(f[0][r] - t, 0);
write_int(r - l - x - y), write_char('\n');
}
write_flush();
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 1224kb
input:
(()))())))(())()())()()))((((()()))((((()((())()))(()((((()(())(())(()))())()())()())(())(()()((((((...
output:
854 136 108 12 836 206 550 252 536 266 220 344 830 502 170 290 522 526 464 98 160 10 840 298 332 272...
result:
ok 1000 lines
Test #2:
score: 10
Accepted
time: 0ms
memory: 1224kb
input:
)))((()())((())((()()())())(((())())((()((())(())()((((((())))((()(()())))(()()(())())()))(()()))(((...
output:
30 22 96 382 252 154 386 56 434 102 590 456 114 56 346 252 324 12 138 184 320 52 380 470 64 476 40 4...
result:
ok 1000 lines
Test #3:
score: 10
Accepted
time: 0ms
memory: 1228kb
input:
(()((())))))))((())(()()))()))()()())(()))(())))))))(((())((((((((((()((()())()(()(())(()())(()))(((...
output:
674 192 100 168 206 244 378 746 184 196 196 602 414 302 224 358 232 482 154 448 168 704 232 232 810 ...
result:
ok 1000 lines
Test #4:
score: 10
Accepted
time: 0ms
memory: 1228kb
input:
))))))))()))())()(()()())()())(((()())(((()(((()()))(()()()))())(()()(()()())()(())()())))))()((((()...
output:
168 378 240 380 548 324 54 492 724 276 184 398 66 452 404 192 192 594 192 128 918 424 516 46 108 430...
result:
ok 1000 lines
Test #5:
score: 10
Accepted
time: 0ms
memory: 1228kb
input:
((())))(()((()()))()))))((((()()()()()()()))()()(()(())(()((()))()((())))))()(((()())()))()())))(())...
output:
634 386 334 6 246 372 226 424 274 168 254 448 312 112 532 126 594 780 112 150 68 470 260 150 22 322 ...
result:
ok 1000 lines
Test #6:
score: 10
Accepted
time: 0ms
memory: 1224kb
input:
))((()))()(())())(()()))))()()((((()()())()((())(())))))(())))()())()()(())()(())())(()())))(()()))(...
output:
728 224 580 200 784 152 280 194 0 664 278 260 630 328 816 470 388 736 82 132 406 440 140 12 276 776 ...
result:
ok 1000 lines
Test #7:
score: 10
Accepted
time: 350ms
memory: 82124kb
input:
((((()))()()())(()))((()())(((())))(()((()))))))()()))()))((((()(()(()()()(()(())(()())))(((()())))(...
output:
142860 235344 446706 759772 134088 748980 83870 685562 31730 572204 366368 67746 18554 603330 946486...
result:
ok 1000000 lines
Test #8:
score: 10
Accepted
time: 337ms
memory: 82120kb
input:
())))()))))(()))()())(()(()))((()))))(()))((())()((()(()()((())(())()))(()))))())(((()(())()(())()()...
output:
583148 425884 255036 448502 200322 256890 167684 114904 55236 440164 138094 879918 580038 452166 984...
result:
ok 1000000 lines
Test #9:
score: 10
Accepted
time: 312ms
memory: 82124kb
input:
)()((()())(())())(()())))(((()())()()(((((()(()()(()(())(()())((()(((()()))()))))()(((())(((((()()()...
output:
47942 241400 323510 553980 111490 20570 51892 169422 82080 124416 107806 804528 123414 274334 135650...
result:
ok 1000000 lines
Test #10:
score: 10
Accepted
time: 320ms
memory: 82120kb
input:
())()()(()())))())())))))))(()((()()(((()))(()(())))(())))())(()((()))()))(()))()((((((())(())(())((...
output:
487878 425694 419984 176404 493462 782462 63276 27548 109942 308166 354282 302574 697816 3128 144748...
result:
ok 1000000 lines