1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <bits/stdc++.h>

#define ll long long
#define str string
#define pii pair<int, int>
#define pll pair<ll, ll>
#define fi first
#define se second

#define vc vector<char>
#define vvc vector<vc>
#define vi vector<int>
#define vvi vector<vi>
#define vvvi vector<vvi>
#define vvvvi vector<vvvi>
#define vll vector<ll>
#define vvll vector<vll>
#define vvvll vector<vvll>
#define vvvvll vector<vvvll>
#define vs vector<str>
#define vvs vector<vs>
#define vpii vector<pii>
#define vvpii vector<vpii>
#define vpll vector<pll>
#define vvpll vector<vpll>
#define vb vector<bool>
#define vvb vector<vb>
#define rep(i, a, b) for (int i = (a); i < int(b); i++)
#define repi(i, a, b) for (int i = (a); i <= int(b); i++)

using namespace std;

int n, k;
ll minsum = 1e16;
vll val[2];
vi best;

str gets(vi & anna) {
    str s;
    rep(i, 0, n) {
        s.push_back(anna[i] ? 'A' : 'B');
    }
    return s;
}

ll verify(vi & anna) {
    ll maxsum = 0;
    ll sum = 0;
    rep(i, 0, n) {
        sum += val[anna[i]][i];
        maxsum = max(maxsum, sum);
        if (sum < 0)
            sum = 0;
    }

    return maxsum;
}

void recur(int x, int spent, vi & anna) {
    if (x == n) {
        ll sum = verify(anna);
        if (minsum > sum) {
            minsum = sum;
            best = anna;
        }
        return;
    }

    if (spent >= k) {
        anna[x] = 0;
        recur(x + 1, spent, anna);
        return;
    }

    if (k == spent + n - x) {
        anna[x] = 1;
        recur(x + 1, spent + 1, anna);
        return;
    }

    rep(i, 0, 2) {
        anna[x] = i;
        recur(x + 1, spent + i, anna);
    }
}

void solve() {
    cin >> n >> k;
    rep(i, 0, n) {
        ll x; cin >> x;
        val[1].push_back(x);
    }
    rep(i, 0, n) {
        ll y; cin >> y;
        val[0].push_back(y);
    }

    vi b(n, 0);
    recur(0, 0, b);
    str s = gets(best);
    cout << minsum << '\n';
    cout << s << '\n';
}


int main() {

    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    bool _multipleTestCases = false;

    if (_multipleTestCases) {
        ll t; cin >> t;
        while (t--)
            solve();
    }
    else {
        solve();
    }

    return 0;
}