Submission #858406

# Submission time Handle Problem Language Result Execution time Memory
858406 2023-10-08T11:33:24 Z Tenis0206 Palindromic Partitions (CEOI17_palindromic) C++11
100 / 100
117 ms 20864 KB
#include <bits/stdc++.h>

using namespace std;

const int nmax = 1e6;
const int b = 27;
const int Mod = 1e9 + 7;

string s;

int h[nmax + 5];
int put[nmax + 5];

int get_hash(int st, int dr)
{
    return (h[dr] - 1LL * h[st - 1] * put[dr - st + 1] % Mod + Mod) % Mod;
}

int solve(int st, int dr)
{
    if(st > dr)
    {
        return 0;
    }
    for(int len=1;st + len - 1 < dr - len + 1;len++)
    {
        bool ok = (get_hash(st,st+len-1) == get_hash(dr-len+1,dr));
        if(ok)
        {
            return 2 + solve(st + len, dr - len);
        }
    }
    return 1;
}

void solve_test()
{
    cin>>s;
    s = "#" + s;
    put[0] = 1;
    for(int i=1;i<s.size();i++)
    {
        put[i] = 1LL * put[i - 1] * b % Mod;
        h[i] = (1LL * h[i - 1] * b + s[i] - 'a' + 1) % Mod;
    }
    cout<<solve(1,s.size() - 1)<<'\n';
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    #ifdef home
    freopen("nr.in","r",stdin);
    freopen("nr.out","w",stdout);
    #endif // home
    int t;
    cin>>t;
    for(int test=1;test<=t;test++)
    {
        solve_test();
    }
    return 0;
}

Compilation message

palindromic.cpp: In function 'void solve_test()':
palindromic.cpp:41:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |     for(int i=1;i<s.size();i++)
      |                 ~^~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 2 ms 348 KB Output is correct
11 Correct 1 ms 344 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 2 ms 348 KB Output is correct
11 Correct 1 ms 344 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 117 ms 16696 KB Output is correct
15 Correct 67 ms 15140 KB Output is correct
16 Correct 111 ms 20864 KB Output is correct
17 Correct 62 ms 11044 KB Output is correct