Submission details
Task:Laskutoimitus
Sender:ollpu
Submission time:2025-12-20 18:42:55 +0200
Language:C++ (C++20)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
#40
#50
#60
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 2, 6details
#2ACCEPTED0.00 s1, 2, 6details
#30.00 s1, 2, 3, 4, 5, 6details
#4ACCEPTED0.24 s2, 6details
#5ACCEPTED0.22 s2, 6details
#60.00 s2, 3, 4, 5, 6details
#70.02 s6details
#80.02 s6details
#90.02 s3, 4, 5, 6details
#100.02 s4, 6details
#110.02 s4, 6details
#120.02 s5, 6details
#130.02 s5, 6details

Code

#include <bits/stdc++.h>
using namespace std;

#ifdef LOCAL
#define D(x) {x;}
#else
#define D(x)
#endif
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()

using ll = long long;
using pii = pair<int, int>;
using vi = vector<int>;

const ll M = 1e9+7;
const int N = 5001;

string s;

int dp[N][N];

int lstpm[N], lsts[N];

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin.exceptions(cin.failbit);
    cin >> s;
    int n = sz(s);
    int fpm = -1, fs = -1;
    for (int i = 0; i < sz(s); ++i) {
        if (s[i] == '+' || s[i] == '-') fpm = i;
        lstpm[i] = fpm;
        if (s[i] == '*') fs = i;
        lsts[i] = fs;
    }

    if (fpm == -1 && fs == -1) {
        ll res = 0;
        for (char c : s) {
            res *= 10;
            res += c-'0';
            res %= M;
        }
        cout << res << endl;
        return 0;
    }

    ll res = 0;
    for (int l = 0; l < n; ++l) {
        if (s[l] >= '0' && s[l] <= '9') {
            dp[l][l] = s[l]-'0';
            res += dp[l][l];
        }
    }
    for (int w = 2; w <= n; ++w) {
        D(cout << w << endl);
        for (int l = 0; l+w <= n; ++l) {
            int r = l+w-1;
            if (s[l] < '0' || s[l] > '9' || s[r] < '0' || s[r] > '9') continue;
            int p = lstpm[r];
            if (p >= l) {
                ll sg = s[p] == '+' ? 1 : M-1;
                dp[l][r] = (dp[l][p-1] + sg * dp[p+1][r]) % M;
                goto done;
            }
            p = lsts[r];
            if (p >= l) {
                dp[l][r] = ll(dp[l][p-1]) * dp[p+1][r] % M;
                goto done;
            }
            dp[l][r] = (10ll * dp[l][r-1] + dp[r][r]) %M;
done:
            D(cout << s.substr(l, w) << " " << dp[l][r] << endl);
            res += dp[l][r];
            res %= M;
        }
    }
    cout << res << endl;
}

Test details

Test 1

Group: 1, 2, 6

Verdict: ACCEPTED

input
*3*7*5+67*2*7*12+38*4+9+2+1+45...

correct output
665527462

user output
665527462

Test 2

Group: 1, 2, 6

Verdict: ACCEPTED

input
84149523195388144+1*8*5*1722+5...

correct output
572374284

user output
572374284

Test 3

Group: 1, 2, 3, 4, 5, 6

Verdict:

input
347358248955243114242997746491...

correct output
823495931

user output
154797710

Feedback: Incorrect character on line 1 col 1: expected "823495931", got "154797710"

Test 4

Group: 2, 6

Verdict: ACCEPTED

input
+4976829*6+5+9*21+4*889+6*7+4*...

correct output
503712700

user output
503712700

Test 5

Group: 2, 6

Verdict: ACCEPTED

input
862+83782+493135426+3152859674...

correct output
624304680

user output
624304680

Test 6

Group: 2, 3, 4, 5, 6

Verdict:

input
297736662651354417265929591745...

correct output
625284593

user output
859790940

Feedback: Incorrect character on line 1 col 1: expected "625284593", got "859790940"

Test 7

Group: 6

Verdict:

input
+9+1+8+92*761+68*983*1+7*1+1*2...

correct output
947469815

user output
(empty)

Test 8

Group: 6

Verdict:

input
97831833*7+4229897789494398634...

correct output
173934151

user output
(empty)

Test 9

Group: 3, 4, 5, 6

Verdict:

input
777551563653223263644973172313...

correct output
278364064

user output
161417391

Feedback: Incorrect character on line 1 col 1: expected "278364064", got "161417391"

Test 10

Group: 4, 6

Verdict:

input
+481+4+66+2+26+7+5+97+6+4+3+14...

correct output
244847224

user output
(empty)

Test 11

Group: 4, 6

Verdict:

input
+8858717+53+6927+314+742552843...

correct output
928369840

user output
(empty)

Test 12

Group: 5, 6

Verdict:

input
*7*75*59*7*9*74*4*18211*31*1*7...

correct output
219382651

user output
(empty)

Test 13

Group: 5, 6

Verdict:

input
73171*3438*9*34165158853*375*7...

correct output
451362612

user output
(empty)