Submission #857183


Source Code Expand

Copy
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <cstdio>
#include <cstring>
using namespace std;

const int64_t M = 1000000007;

string w;
int n;

int gtbl[4001][4001];

bool check(int l, int r, int s)
{
    int sl = (r - l) / s;
    for (int ofs = 0; ofs < sl; ofs++) {
        for (int seg = 1; seg < s; seg++) {
            if (w[l + ofs] != w[l + seg * sl + ofs]) {
                return false;
            }
        }
    }
    return true;
}

bool is_good(int l, int r)
{
    auto &ret = gtbl[l][r];

    if (ret >= 0) return ret != 0;
    int L = r - l;

    ret = 0;
    for (int i = 2; i * i <= L; i++) {
        if (L % i == 0) continue;

        if (check(l, r, i)) return ret = 1;
        if (check(l, r, L / i)) return ret = 1;
    }

    return ret;
}

pair<int, int> tbl[4001][4001];

pair<int, int> solve(int l, int r)
{
    auto &ret = tbl[l][r];
    if (ret.first >= 0) return ret;

    ret.first = 0;
    ret.second = 0;

    if (r - l == 1) return ret = make_pair(1, 1);
    if (is_good(l, r)) return ret = make_pair(1, 1);

    for (int m = l + 1; m < r; m++) {
        auto ll = solve(l, m);
        auto rr = solve(m, l);

        if (ret.first == 0 || ret.first > ll.first + rr.first) {
            ret.first = ll.first + rr.first;
            ret.second = ((int64_t)ll.second * rr.second) % M;
        } else if (ret.first == ll.first + rr.first) {
            ret.second = (ret.second + ((int64_t)ll.second * rr.second)) % M;
        }
    }

    return ret;
}

int main()
{
    cin >> w;
    n = w.size();

    auto r =  solve(0, n);
    cout << r.first << endl;
    cout << r.second << endl;

    return 0;
}

Submission Info

Submission Time
Task F - Best Representation
User tanakh
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1811 Byte
Status WA
Exec Time 35 ms
Memory 900 KB

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 0 / 400 0 / 500
Status
WA × 3
WA × 36
WA × 65
Set Name Test Cases
Sample example_01.txt, example_02.txt, example_03.txt
Subtask1 example_01.txt, example_02.txt, example_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt, subtask1_31.txt, subtask1_32.txt, subtask1_33.txt
All example_01.txt, example_02.txt, example_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt, subtask1_31.txt, subtask1_32.txt, subtask1_33.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask2_26.txt, subtask2_27.txt, subtask2_28.txt, subtask2_29.txt
Case Name Status Exec Time Memory
example_01.txt WA 4 ms 256 KB
example_02.txt WA 4 ms 256 KB
example_03.txt WA 4 ms 256 KB
subtask1_01.txt WA 4 ms 256 KB
subtask1_02.txt WA 4 ms 256 KB
subtask1_03.txt WA 4 ms 256 KB
subtask1_04.txt WA 4 ms 256 KB
subtask1_05.txt WA 4 ms 256 KB
subtask1_06.txt WA 4 ms 256 KB
subtask1_07.txt WA 4 ms 256 KB
subtask1_08.txt WA 4 ms 256 KB
subtask1_09.txt WA 4 ms 256 KB
subtask1_10.txt WA 4 ms 256 KB
subtask1_11.txt WA 4 ms 256 KB
subtask1_12.txt WA 4 ms 256 KB
subtask1_13.txt WA 4 ms 256 KB
subtask1_14.txt WA 4 ms 256 KB
subtask1_15.txt WA 4 ms 256 KB
subtask1_16.txt WA 4 ms 256 KB
subtask1_17.txt WA 4 ms 256 KB
subtask1_18.txt WA 4 ms 256 KB
subtask1_19.txt WA 4 ms 256 KB
subtask1_20.txt WA 4 ms 256 KB
subtask1_21.txt WA 4 ms 256 KB
subtask1_22.txt WA 4 ms 256 KB
subtask1_23.txt WA 4 ms 256 KB
subtask1_24.txt WA 4 ms 256 KB
subtask1_25.txt WA 4 ms 256 KB
subtask1_26.txt WA 4 ms 256 KB
subtask1_27.txt WA 4 ms 256 KB
subtask1_28.txt WA 4 ms 256 KB
subtask1_29.txt WA 4 ms 256 KB
subtask1_30.txt WA 4 ms 256 KB
subtask1_31.txt WA 4 ms 256 KB
subtask1_32.txt WA 4 ms 256 KB
subtask1_33.txt WA 6 ms 256 KB
subtask2_01.txt WA 26 ms 900 KB
subtask2_02.txt WA 32 ms 900 KB
subtask2_03.txt WA 31 ms 900 KB
subtask2_04.txt WA 32 ms 900 KB
subtask2_05.txt WA 32 ms 900 KB
subtask2_06.txt WA 32 ms 900 KB
subtask2_07.txt WA 35 ms 900 KB
subtask2_08.txt WA 32 ms 900 KB
subtask2_09.txt WA 32 ms 900 KB
subtask2_10.txt WA 31 ms 900 KB
subtask2_11.txt WA 31 ms 900 KB
subtask2_12.txt WA 31 ms 900 KB
subtask2_13.txt WA 32 ms 900 KB
subtask2_14.txt WA 32 ms 900 KB
subtask2_15.txt WA 32 ms 900 KB
subtask2_16.txt WA 32 ms 900 KB
subtask2_17.txt WA 31 ms 900 KB
subtask2_18.txt WA 32 ms 900 KB
subtask2_19.txt WA 31 ms 900 KB
subtask2_20.txt WA 31 ms 900 KB
subtask2_21.txt WA 30 ms 900 KB
subtask2_22.txt WA 32 ms 900 KB
subtask2_23.txt WA 32 ms 900 KB
subtask2_24.txt WA 27 ms 900 KB
subtask2_25.txt WA 29 ms 900 KB
subtask2_26.txt WA 30 ms 900 KB
subtask2_27.txt WA 27 ms 900 KB
subtask2_28.txt WA 19 ms 900 KB
subtask2_29.txt WA 26 ms 900 KB