답안 #1095916

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1095916 2024-10-03T11:56:33 Z _8_8_ Monochrome Points (JOI20_monochrome) C++17
35 / 100
2000 ms 6880 KB
#include <bits/stdc++.h>
    
using namespace std;
    
typedef long long ll;
const int  N = 2e5 + 12, MOD = (int)1e9 + 7;

int n, t[N * 2], val[N];
string s;
vector<int> x, y;
void add(int i, int val) {
    while(i <= n + n) {
        t[i] += val;
        i += i & -i;
    }
}
ll get(int i) {
    ll ret = 0;
    while(i) {
        ret += t[i];
        i -= i & -i;
    }
    return ret;
}
ll get(int l, int r) {
    return get(r) - get(l - 1);
}
ll mem[N];
ll calc(int k) {
    if(mem[k] != -1) {
        return mem[k];
    }
    for(int i = 1; i <= n + n; i++) {
        t[i] = 0;
    }
    ll ret = 0;
    for(int i = 0; i < n; i++) {
        int j = (i + k) % n;
        int l = x[i], r = y[j];
        if(l > r) {
            swap(l, r);
        }
        val[l] = -1;
        val[r] = l;
    }
    for(int x = 1; x <= n + n; x++) {
        int y = val[x];
        if(y == -1) {
            add(x, 1); 
        } else {
            ret += get(y + 1, x);
            add(y, -1);
        }
    }
    return mem[k] = ret;
}
void test() {
    memset(mem, -1, sizeof(mem));
    cin >> n >> s;
    for(int i = 0; i < n + n; i++) {
        if(s[i] == 'W') {
            x.push_back(i + 1);
        } else {
            y.push_back(i + 1);
        }
    }
    if(n == 1) {
        cout << 0 << '\n';
        return;
    }
    if(calc(0) < calc(1)) {
        int l = 1, r = n;
        while(r - l > 1) {
            int mid = (l + r) >> 1;
            if(calc(mid) > calc(mid - 1)) {
                l = mid;
            } else {
                r = mid;
            }
        }
        cout << calc(l) << '\n';
    } else {
        int l = -1, r = n - 1;
        while(r - l > 1) {
            int mid = (l + r) >> 1;
            if(calc(mid) > calc(mid + 1)) {
                r = mid;
            } else {
                l = mid;
            }
        }
        cout << calc(r) << '\n';
    }
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0); 

    int t = 1; 
    // cin >> t;
    
    while(t--) 
        test();
    return 0;
}

# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1880 KB Output is correct
2 Correct 1 ms 1884 KB Output is correct
3 Correct 1 ms 1884 KB Output is correct
4 Correct 1 ms 1884 KB Output is correct
5 Correct 1 ms 1880 KB Output is correct
6 Correct 1 ms 1884 KB Output is correct
7 Correct 1 ms 1880 KB Output is correct
8 Correct 1 ms 1884 KB Output is correct
9 Correct 1 ms 1884 KB Output is correct
10 Correct 1 ms 1884 KB Output is correct
11 Correct 1 ms 1884 KB Output is correct
12 Correct 1 ms 2036 KB Output is correct
13 Correct 1 ms 1884 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1880 KB Output is correct
2 Correct 1 ms 1884 KB Output is correct
3 Correct 1 ms 1884 KB Output is correct
4 Correct 1 ms 1884 KB Output is correct
5 Correct 1 ms 1880 KB Output is correct
6 Correct 1 ms 1884 KB Output is correct
7 Correct 1 ms 1880 KB Output is correct
8 Correct 1 ms 1884 KB Output is correct
9 Correct 1 ms 1884 KB Output is correct
10 Correct 1 ms 1884 KB Output is correct
11 Correct 1 ms 1884 KB Output is correct
12 Correct 1 ms 2036 KB Output is correct
13 Correct 1 ms 1884 KB Output is correct
14 Correct 1 ms 1884 KB Output is correct
15 Correct 1 ms 1884 KB Output is correct
16 Correct 1 ms 1884 KB Output is correct
17 Correct 1 ms 1884 KB Output is correct
18 Correct 1 ms 1884 KB Output is correct
19 Correct 1 ms 1884 KB Output is correct
20 Correct 1 ms 1884 KB Output is correct
21 Correct 1 ms 1884 KB Output is correct
22 Correct 1 ms 1884 KB Output is correct
23 Correct 1 ms 1884 KB Output is correct
24 Correct 1 ms 1884 KB Output is correct
25 Correct 1 ms 1884 KB Output is correct
26 Correct 1 ms 1884 KB Output is correct
27 Correct 1 ms 1884 KB Output is correct
28 Correct 1 ms 1884 KB Output is correct
29 Correct 1 ms 1884 KB Output is correct
30 Correct 1 ms 1884 KB Output is correct
31 Correct 1 ms 1884 KB Output is correct
32 Correct 1 ms 1884 KB Output is correct
33 Correct 1 ms 1880 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1880 KB Output is correct
2 Correct 1 ms 1884 KB Output is correct
3 Correct 1 ms 1884 KB Output is correct
4 Correct 1 ms 1884 KB Output is correct
5 Correct 1 ms 1880 KB Output is correct
6 Correct 1 ms 1884 KB Output is correct
7 Correct 1 ms 1880 KB Output is correct
8 Correct 1 ms 1884 KB Output is correct
9 Correct 1 ms 1884 KB Output is correct
10 Correct 1 ms 1884 KB Output is correct
11 Correct 1 ms 1884 KB Output is correct
12 Correct 1 ms 2036 KB Output is correct
13 Correct 1 ms 1884 KB Output is correct
14 Correct 1 ms 1884 KB Output is correct
15 Correct 1 ms 1884 KB Output is correct
16 Correct 1 ms 1884 KB Output is correct
17 Correct 1 ms 1884 KB Output is correct
18 Correct 1 ms 1884 KB Output is correct
19 Correct 1 ms 1884 KB Output is correct
20 Correct 1 ms 1884 KB Output is correct
21 Correct 1 ms 1884 KB Output is correct
22 Correct 1 ms 1884 KB Output is correct
23 Correct 1 ms 1884 KB Output is correct
24 Correct 1 ms 1884 KB Output is correct
25 Correct 1 ms 1884 KB Output is correct
26 Correct 1 ms 1884 KB Output is correct
27 Correct 1 ms 1884 KB Output is correct
28 Correct 1 ms 1884 KB Output is correct
29 Correct 1 ms 1884 KB Output is correct
30 Correct 1 ms 1884 KB Output is correct
31 Correct 1 ms 1884 KB Output is correct
32 Correct 1 ms 1884 KB Output is correct
33 Correct 1 ms 1880 KB Output is correct
34 Correct 4 ms 1884 KB Output is correct
35 Correct 2 ms 1884 KB Output is correct
36 Correct 2 ms 2096 KB Output is correct
37 Correct 2 ms 2096 KB Output is correct
38 Correct 2 ms 1884 KB Output is correct
39 Correct 2 ms 1884 KB Output is correct
40 Correct 2 ms 1884 KB Output is correct
41 Correct 2 ms 2096 KB Output is correct
42 Correct 2 ms 1880 KB Output is correct
43 Correct 3 ms 1880 KB Output is correct
44 Correct 2 ms 1884 KB Output is correct
45 Correct 2 ms 2028 KB Output is correct
46 Correct 2 ms 1884 KB Output is correct
47 Correct 2 ms 1884 KB Output is correct
48 Correct 2 ms 1884 KB Output is correct
49 Correct 2 ms 1884 KB Output is correct
50 Correct 2 ms 1880 KB Output is correct
51 Correct 2 ms 1884 KB Output is correct
52 Correct 2 ms 1884 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1880 KB Output is correct
2 Correct 1 ms 1884 KB Output is correct
3 Correct 1 ms 1884 KB Output is correct
4 Correct 1 ms 1884 KB Output is correct
5 Correct 1 ms 1880 KB Output is correct
6 Correct 1 ms 1884 KB Output is correct
7 Correct 1 ms 1880 KB Output is correct
8 Correct 1 ms 1884 KB Output is correct
9 Correct 1 ms 1884 KB Output is correct
10 Correct 1 ms 1884 KB Output is correct
11 Correct 1 ms 1884 KB Output is correct
12 Correct 1 ms 2036 KB Output is correct
13 Correct 1 ms 1884 KB Output is correct
14 Correct 1 ms 1884 KB Output is correct
15 Correct 1 ms 1884 KB Output is correct
16 Correct 1 ms 1884 KB Output is correct
17 Correct 1 ms 1884 KB Output is correct
18 Correct 1 ms 1884 KB Output is correct
19 Correct 1 ms 1884 KB Output is correct
20 Correct 1 ms 1884 KB Output is correct
21 Correct 1 ms 1884 KB Output is correct
22 Correct 1 ms 1884 KB Output is correct
23 Correct 1 ms 1884 KB Output is correct
24 Correct 1 ms 1884 KB Output is correct
25 Correct 1 ms 1884 KB Output is correct
26 Correct 1 ms 1884 KB Output is correct
27 Correct 1 ms 1884 KB Output is correct
28 Correct 1 ms 1884 KB Output is correct
29 Correct 1 ms 1884 KB Output is correct
30 Correct 1 ms 1884 KB Output is correct
31 Correct 1 ms 1884 KB Output is correct
32 Correct 1 ms 1884 KB Output is correct
33 Correct 1 ms 1880 KB Output is correct
34 Correct 4 ms 1884 KB Output is correct
35 Correct 2 ms 1884 KB Output is correct
36 Correct 2 ms 2096 KB Output is correct
37 Correct 2 ms 2096 KB Output is correct
38 Correct 2 ms 1884 KB Output is correct
39 Correct 2 ms 1884 KB Output is correct
40 Correct 2 ms 1884 KB Output is correct
41 Correct 2 ms 2096 KB Output is correct
42 Correct 2 ms 1880 KB Output is correct
43 Correct 3 ms 1880 KB Output is correct
44 Correct 2 ms 1884 KB Output is correct
45 Correct 2 ms 2028 KB Output is correct
46 Correct 2 ms 1884 KB Output is correct
47 Correct 2 ms 1884 KB Output is correct
48 Correct 2 ms 1884 KB Output is correct
49 Correct 2 ms 1884 KB Output is correct
50 Correct 2 ms 1880 KB Output is correct
51 Correct 2 ms 1884 KB Output is correct
52 Correct 2 ms 1884 KB Output is correct
53 Execution timed out 2017 ms 6880 KB Time limit exceeded
54 Halted 0 ms 0 KB -