답안 #889694

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
889694 2023-12-20T05:31:14 Z vjudge1 Chorus (JOI23_chorus) C++17
16 / 100
7000 ms 504 KB
#include <bits/stdc++.h>

using namespace std;

#define all(x) x.begin(), x.end()
#define ar array
#define pb push_back
#define ln '\n'
#define int long long

using i64 = long long;

template <class F, class _S>
bool chmin(F &u, const _S &v){
    bool flag = false;
    if ( u > v ){
        u = v; flag |= true;
    }
    return flag;
}

template <class F, class _S>
bool chmax(F &u, const _S &v){
    bool flag = false;
    if ( u < v ){
        u = v; flag |= true;
    }
    return flag;
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, k; cin >> n >> k;
    string s; cin >> s;
    int m = s.size();
    auto get = [&](auto &u){ return u == 'A' ? -1 : 0; };
    auto ok = [&](auto &s){
        int cnt = 0, sf = 0;
        for ( int i = m - 1; i >= 0; i-- ){
            if ( s[i] == 'B' ){
                ++sf;
            } else{
                cnt++;
                if ( !sf ) return false;
                int tmp = sf; sf = 0;
                int j = i + 1;
                while ( j - 1 >= 0 && tmp + get(s[j - 1]) >= 0 ){
                    tmp += get(s[--j]);
                    if ( s[j] == 'B' ) sf++;
                }
                i = j;
            }
        }
        return cnt <= k;
    };
    vector <int> a;
    for ( int i = 0; i < m; i++ ){
        if ( s[i] == 'B' ) a.pb(i);
    }
    auto t = s;
    sort(all(t));
    int mn = n * n + 1;
    do{
        if ( !ok(t) ) continue;
        vector <int> b;
        for ( int i = 0; i < m; i++ ){
            if ( t[i] == 'B' ) b.pb(i);
        }
        int ans = 0;
        for ( int i = 0; i < n; i++ ){
            ans += abs(a[i] - b[i]);
        }
        chmin(mn, ans);
    } while ( next_permutation(all(t)) );
    cout << mn;

    cout << '\n';
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 6 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 504 KB Output is correct
7 Correct 6 ms 348 KB Output is correct
8 Correct 5 ms 348 KB Output is correct
9 Correct 5 ms 460 KB Output is correct
10 Correct 5 ms 456 KB Output is correct
11 Correct 8 ms 344 KB Output is correct
12 Correct 8 ms 456 KB Output is correct
13 Correct 8 ms 348 KB Output is correct
14 Correct 5 ms 344 KB Output is correct
15 Correct 6 ms 348 KB Output is correct
16 Correct 8 ms 456 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 6 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 504 KB Output is correct
7 Correct 6 ms 348 KB Output is correct
8 Correct 5 ms 348 KB Output is correct
9 Correct 5 ms 460 KB Output is correct
10 Correct 5 ms 456 KB Output is correct
11 Correct 8 ms 344 KB Output is correct
12 Correct 8 ms 456 KB Output is correct
13 Correct 8 ms 348 KB Output is correct
14 Correct 5 ms 344 KB Output is correct
15 Correct 6 ms 348 KB Output is correct
16 Correct 8 ms 456 KB Output is correct
17 Execution timed out 7052 ms 348 KB Time limit exceeded
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 6 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 504 KB Output is correct
7 Correct 6 ms 348 KB Output is correct
8 Correct 5 ms 348 KB Output is correct
9 Correct 5 ms 460 KB Output is correct
10 Correct 5 ms 456 KB Output is correct
11 Correct 8 ms 344 KB Output is correct
12 Correct 8 ms 456 KB Output is correct
13 Correct 8 ms 348 KB Output is correct
14 Correct 5 ms 344 KB Output is correct
15 Correct 6 ms 348 KB Output is correct
16 Correct 8 ms 456 KB Output is correct
17 Execution timed out 7052 ms 348 KB Time limit exceeded
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 6 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 504 KB Output is correct
7 Correct 6 ms 348 KB Output is correct
8 Correct 5 ms 348 KB Output is correct
9 Correct 5 ms 460 KB Output is correct
10 Correct 5 ms 456 KB Output is correct
11 Correct 8 ms 344 KB Output is correct
12 Correct 8 ms 456 KB Output is correct
13 Correct 8 ms 348 KB Output is correct
14 Correct 5 ms 344 KB Output is correct
15 Correct 6 ms 348 KB Output is correct
16 Correct 8 ms 456 KB Output is correct
17 Execution timed out 7052 ms 348 KB Time limit exceeded
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 6 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 504 KB Output is correct
7 Correct 6 ms 348 KB Output is correct
8 Correct 5 ms 348 KB Output is correct
9 Correct 5 ms 460 KB Output is correct
10 Correct 5 ms 456 KB Output is correct
11 Correct 8 ms 344 KB Output is correct
12 Correct 8 ms 456 KB Output is correct
13 Correct 8 ms 348 KB Output is correct
14 Correct 5 ms 344 KB Output is correct
15 Correct 6 ms 348 KB Output is correct
16 Correct 8 ms 456 KB Output is correct
17 Execution timed out 7052 ms 348 KB Time limit exceeded
18 Halted 0 ms 0 KB -