CSES - KILO 2019 2/5 - Results
Submission details
Task:Onnenluku
Sender:hltk
Submission time:2019-10-09 14:26:47 +0300
Language:C++17
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED19
#2ACCEPTED33
#3ACCEPTED48
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1details
#2ACCEPTED0.01 s1details
#3ACCEPTED0.01 s1details
#4ACCEPTED0.01 s1details
#5ACCEPTED0.01 s1details
#6ACCEPTED0.01 s2details
#7ACCEPTED0.01 s2details
#8ACCEPTED0.01 s2details
#9ACCEPTED0.01 s2details
#10ACCEPTED0.01 s2details
#11ACCEPTED0.01 s3details
#12ACCEPTED0.01 s3details
#13ACCEPTED0.01 s3details
#14ACCEPTED0.01 s3details
#15ACCEPTED0.01 s3details

Code

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
using ii=long long;
ii dp[55][10][10][16];
int pd[55][10][10][16], A, B;
ii hae(const string &c, int x, bool au, bool bu, bool f, bool o, bool b)
{
    if (x == (int) c.size()) {
        return !b && (o ? !f : 1) && au && bu;
    }
    int &u = pd[x][A][B][au | (2 * bu) | (4 * f) | (8 * o) | (16 * b)];
    ii &r = dp[x][A][B][au | (2 * bu) | (4 * f) | (8 * o) | (16 * b)];
    if (u) return r;
    u = 1;
    r = 0;
    if (b) r += hae(c, x + 1, au, bu, 0, o, 1);
    if (!f || (f && A <= (int) c[x])) {
        r += hae(c, x + 1, 1, bu, (A == (int) c[x]) && f, o, 0);
    }
    if (!f || (f && B <= (int) c[x])) {
        r += hae(c, x + 1, au, 1, (B == (int) c[x]) && f, o, 0);
    }
    return r;
}
ii calc(string &c, bool o = 0)
{
    memset(pd, 0, sizeof(pd));
    memset(dp, 0, sizeof(dp));
    for (char &x : c) {
        x -= '0';
    }
    ii r = 0;
    for (A = 1; A <= 9; ++A) {
        for (B = A + 1; B <= 9; ++B) {
            r += hae(c, 0, 0, 0, 1, o, 1);
        }
    }
    return r;
}
int main(int argc, char *argv[])
{
    string a, b;
    cin >> a >> b;
    cout << calc(b) - calc(a, 1) << "\n";
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
2157 93337

correct output
1421

user output
1421

Test 2

Group: 1

Verdict: ACCEPTED

input
4875 95124

correct output
1278

user output
1278

Test 3

Group: 1

Verdict: ACCEPTED

input
5577 96352

correct output
1245

user output
1245

Test 4

Group: 1

Verdict: ACCEPTED

input
8362 92950

correct output
1076

user output
1076

Test 5

Group: 1

Verdict: ACCEPTED

input
5658 96660

correct output
1238

user output
1238

Test 6

Group: 2

Verdict: ACCEPTED

input
51312303535233 994542403556353

correct output
1453976

user output
1453976

Test 7

Group: 2

Verdict: ACCEPTED

input
25636920452341 934558290712847

correct output
1544072

user output
1544072

Test 8

Group: 2

Verdict: ACCEPTED

input
7917952071965 985207415843573

correct output
1763176

user output
1763176

Test 9

Group: 2

Verdict: ACCEPTED

input
48991581181227 907034837225965

correct output
1380248

user output
1380248

Test 10

Group: 2

Verdict: ACCEPTED

input
47968703305149 924246001328437

correct output
1396632

user output
1396632

Test 11

Group: 3

Verdict: ACCEPTED

input
292953755324413237753216241025...

correct output
53286731528535944

user output
53286731528535944

Test 12

Group: 3

Verdict: ACCEPTED

input
373990979330820426927419348165...

correct output
51580289482227600

user output
51580289482227600

Test 13

Group: 3

Verdict: ACCEPTED

input
701417326319476057561825658890...

correct output
42924933948374952

user output
42924933948374952

Test 14

Group: 3

Verdict: ACCEPTED

input
177202883511434557056457305647...

correct output
54500592365600640

user output
54500592365600640

Test 15

Group: 3

Verdict: ACCEPTED

input
977665117437419620152569155919...

correct output
38562071809359800

user output
38562071809359800