Submission #68563439


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

#define int long long
#define pb push_back
#define fi first
#define se second
#define ld long double
#define pi pair<int, int>
#define mp make_pair
#define vi vector<int>
#define vvi vector<vector<int>>

#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

const int INF = (int)4e18;
const int MODa = 1e9 + 7;
const int MOD = 998244353;

mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count());

int enc(vector<int>& p)
{
    int ans = 0;
    int pp = 1;
    for(int i=0; i<p.size(); i++)
    {
        ans += p[i]*pp;
        pp *= 100;
    }

    return ans;
}

vector<int> dec(int x, int n)
{
    vector<int> p(0);
    for(int i=0; i<n; i++)
    {
        p.pb(x%100);
        x /= 100;
    }

    return p;
}

int nv(string& s, int x, char c)
{
    if(x==s.size()) return x;

    if(x==0)
    {
        if(c==s[0]) return 1;
        else return 0;
    }

    int al = 0;
    string ns = s.substr(0, x) + c;
    for(int z=x+1; z; z--)
    {
        if(ns.substr(ns.size()-z, z)==s.substr(0, z))
        {
            al = z;
            break;
        }
    }

    return al;
}

void solve()
{
    int n, l;
    cin>>n>>l;

    vector<string> s(n);

    for(int i=0; i<n; i++)
    {
        cin>>s[i];
    }

    vector<map<int, int>> cnt(l+1);

    int prec[10][12][26];
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<=s[i].size(); j++)
        {
            for(int k=0; k<26; k++)
            {
                prec[i][j][k] = nv(s[i], j, ('a' + k));
            }
        }
    }

    // cerr<<"doenn"<<"\n";

    cnt[0][0] = 1;

    for(int i=0; i<l; i++)
    {
        // cerr<<i<<"\n";
        for(auto pp: cnt[i])
        {
            vector<int> dn = dec(pp.fi, n);
            vector<int> cn = dn;
            for(int j=0; j<26; j++)
            {
                for(int k=0; k<n; k++)
                {
                    // cn[k] = nv(s[k], dn[k], ('a'+j));
                    cn[k] = prec[k][dn[k]][j];
                }
                int ee = enc(cn);
                cnt[i+1][ee] += pp.se;
                cnt[i+1][ee] %= MOD;            
            }
        }
    }

    vector<int> fin(n);
    for(int i=0; i<n; i++)
    {
        fin[i] = s[i].size();
    }

    int ee = enc(fin);

    if(!cnt[l].count(ee))
    {
        cout<<0<<"\n";
        return;
    }

    cout<<cnt[l][ee]<<"\n";
}

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    int t = 1;  
    // cin>>t;
    while(t--)
    {
        solve();
    }

    return 0;
}

Submission Info

Submission Time
Task F - All Included
User ha___il
Language C++ 20 (gcc 12.2)
Score 550
Code Size 2739 Byte
Status AC
Exec Time 980 ms
Memory 44492 KiB

Compile Error

Main.cpp: In function ‘long long int enc(std::vector<long long int>&)’:
Main.cpp:28:19: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   28 |     for(int i=0; i<p.size(); i++)
      |                  ~^~~~~~~~~
Main.cpp: In function ‘long long int nv(std::string&, long long int, char)’:
Main.cpp:51:9: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   51 |     if(x==s.size()) return x;
      |        ~^~~~~~~~~~
Main.cpp: In function ‘void solve()’:
Main.cpp:90:23: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   90 |         for(int j=0; j<=s[i].size(); j++)
      |                      ~^~~~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 550 / 550
Status
AC × 3
AC × 36
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3500 KiB
00_sample_01.txt AC 1 ms 3524 KiB
00_sample_02.txt AC 17 ms 4560 KiB
01_test_00.txt AC 193 ms 15544 KiB
01_test_01.txt AC 563 ms 35360 KiB
01_test_02.txt AC 572 ms 35300 KiB
01_test_03.txt AC 160 ms 12524 KiB
01_test_04.txt AC 757 ms 38436 KiB
01_test_05.txt AC 713 ms 37188 KiB
01_test_06.txt AC 194 ms 13232 KiB
01_test_07.txt AC 801 ms 38604 KiB
01_test_08.txt AC 778 ms 37436 KiB
01_test_09.txt AC 590 ms 28772 KiB
01_test_10.txt AC 797 ms 36532 KiB
01_test_11.txt AC 839 ms 37996 KiB
01_test_12.txt AC 417 ms 28056 KiB
01_test_13.txt AC 652 ms 39212 KiB
01_test_14.txt AC 767 ms 40036 KiB
01_test_15.txt AC 846 ms 43572 KiB
01_test_16.txt AC 870 ms 41532 KiB
01_test_17.txt AC 888 ms 43016 KiB
01_test_18.txt AC 548 ms 27988 KiB
01_test_19.txt AC 980 ms 44088 KiB
01_test_20.txt AC 7 ms 4164 KiB
01_test_21.txt AC 24 ms 5388 KiB
01_test_22.txt AC 14 ms 4756 KiB
01_test_23.txt AC 73 ms 8076 KiB
01_test_24.txt AC 35 ms 5756 KiB
01_test_25.txt AC 58 ms 6896 KiB
01_test_26.txt AC 18 ms 4680 KiB
01_test_27.txt AC 121 ms 9704 KiB
01_test_28.txt AC 1 ms 3588 KiB
01_test_29.txt AC 1 ms 3512 KiB
01_test_30.txt AC 3 ms 3736 KiB
01_test_31.txt AC 909 ms 44492 KiB
01_test_32.txt AC 144 ms 12004 KiB