Submission #44221

# Submission time Handle Problem Language Result Execution time Memory
44221 2018-03-30T15:15:45 Z neutron_byte Palindrome-Free Numbers (BOI13_numbers) C++17
100 / 100
3 ms 1280 KB
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;

int da[20];
int db[20];

ll memo[20][2][2][10][10][2][2];

ll solve(int idx, bool flagA, bool flagB, int pre1, int pre2, bool zero1, bool zero2) {
    if (idx == -1) {
        return 1;
    }

    if (memo[idx][flagA][flagB][pre1][pre2][zero1][zero2] != -1) {
        return memo[idx][flagA][flagB][pre1][pre2][zero1][zero2];
    }

    ll rs = 0;
    for (int d = 0; d <= 9; ++d) {
        if (flagA && d < da[idx]) continue;
        if (flagB && d > db[idx]) continue;
        if ((!zero1 && pre1 == d) || (!zero2 && pre2 == d)) continue;

        bool nzero1;
        if (zero1 && d == 0) nzero1 = true;
        else nzero1 = false;

        rs += solve(idx - 1, flagA && d == da[idx], flagB && d == db[idx], d, pre1, nzero1, zero1);
    }

    return memo[idx][flagA][flagB][pre1][pre2][zero1][zero2] = rs;
}

int main() {
    ll a, b;
    cin >> a >> b;

    fill(da, da + 20, 0);
    fill(db, db + 20, 0);

    for (int i = 0; i < 20; ++i) {
        da[i] = a % 10;
        db[i] = b % 10;
        a /= 10; b /= 10;
    }

    fill(memo[0][0][0][0][0][0], memo[0][0][0][0][0][0] + 32000, -1);
    cout << solve(19, true, true, 0, 0, true, true) << endl;

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 632 KB Output is correct
2 Correct 2 ms 780 KB Output is correct
3 Correct 2 ms 976 KB Output is correct
4 Correct 2 ms 976 KB Output is correct
5 Correct 2 ms 976 KB Output is correct
6 Correct 2 ms 976 KB Output is correct
7 Correct 2 ms 976 KB Output is correct
8 Correct 2 ms 976 KB Output is correct
9 Correct 2 ms 976 KB Output is correct
10 Correct 2 ms 984 KB Output is correct
11 Correct 2 ms 1008 KB Output is correct
12 Correct 2 ms 1060 KB Output is correct
13 Correct 2 ms 1060 KB Output is correct
14 Correct 2 ms 1108 KB Output is correct
15 Correct 2 ms 1108 KB Output is correct
16 Correct 2 ms 1108 KB Output is correct
17 Correct 2 ms 1108 KB Output is correct
18 Correct 2 ms 1108 KB Output is correct
19 Correct 2 ms 1108 KB Output is correct
20 Correct 2 ms 1108 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 1108 KB Output is correct
2 Correct 2 ms 1108 KB Output is correct
3 Correct 2 ms 1108 KB Output is correct
4 Correct 3 ms 1108 KB Output is correct
5 Correct 2 ms 1108 KB Output is correct
6 Correct 2 ms 1108 KB Output is correct
7 Correct 2 ms 1108 KB Output is correct
8 Correct 2 ms 1108 KB Output is correct
9 Correct 2 ms 1108 KB Output is correct
10 Correct 2 ms 1108 KB Output is correct
11 Correct 2 ms 1108 KB Output is correct
12 Correct 2 ms 1108 KB Output is correct
13 Correct 2 ms 1108 KB Output is correct
14 Correct 2 ms 1224 KB Output is correct
15 Correct 3 ms 1224 KB Output is correct
16 Correct 2 ms 1224 KB Output is correct
17 Correct 2 ms 1224 KB Output is correct
18 Correct 2 ms 1224 KB Output is correct
19 Correct 2 ms 1224 KB Output is correct
20 Correct 2 ms 1224 KB Output is correct
21 Correct 3 ms 1224 KB Output is correct
22 Correct 2 ms 1224 KB Output is correct
23 Correct 2 ms 1224 KB Output is correct
24 Correct 2 ms 1224 KB Output is correct
25 Correct 2 ms 1224 KB Output is correct
26 Correct 2 ms 1224 KB Output is correct
27 Correct 2 ms 1224 KB Output is correct
28 Correct 2 ms 1224 KB Output is correct
29 Correct 2 ms 1224 KB Output is correct
30 Correct 2 ms 1224 KB Output is correct
31 Correct 2 ms 1224 KB Output is correct
32 Correct 2 ms 1224 KB Output is correct
33 Correct 3 ms 1224 KB Output is correct
34 Correct 2 ms 1224 KB Output is correct
35 Correct 2 ms 1224 KB Output is correct
36 Correct 2 ms 1224 KB Output is correct
37 Correct 2 ms 1232 KB Output is correct
38 Correct 2 ms 1248 KB Output is correct
39 Correct 2 ms 1260 KB Output is correct
40 Correct 2 ms 1260 KB Output is correct
41 Correct 2 ms 1260 KB Output is correct
42 Correct 2 ms 1260 KB Output is correct
43 Correct 2 ms 1264 KB Output is correct
44 Correct 2 ms 1280 KB Output is correct
45 Correct 2 ms 1280 KB Output is correct