Submission #934238

# Submission time Handle Problem Language Result Execution time Memory
934238 2024-02-27T03:20:40 Z Muhammad_Aneeq Palindromic Partitions (CEOI17_palindromic) C++17
100 / 100
692 ms 20872 KB
/*
بسم الله الرحمن الرحيم
Author:
                          (:Muhammad Aneeq:)
*/

#include <iostream>
using namespace std;
#define int long long
int mod=1e9+7,base=997;
int power(int x,int y)
{
  int res=1;
  while (y)
  {
    if (y&1)
      res=(res*x)%mod;
    x=(x*x)%mod;
    y>>=1;
  }
  return res;
}
inline void solve()
{
  string s;
  cin>>s;
  int n=s.size();
  int hash[n+1]={};
  for (int i=0;i<n;i++)
    hash[i+1]=((hash[i]*base)+(s[i]-'a'+1))%mod;
  int l=0,r=1,l1=n-1,r1=n;
  int ans=0,len=0;
  if (s.size()==1)
  {
    cout<<1<<endl;return;
  }
  while (r<=l1)
  {
    len++;
    int f=(hash[l]*power(base,len))%mod;
    f=(hash[r]-f+mod)%mod;
    int g=(hash[l1]*power(base,len))%mod;
    g=(hash[r1]-g+mod)%mod;
    if (f==g)
    {
      ans+=2;
      l=r;
      r1=l1;
      len=0;
      if (r1-l==1)
        ans++;
    }
    r++;
    l1--;
  }
  if (l+1!=r)
    ans++;
  cout<<ans<<endl;
}
signed main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int t=1;
    cin>>t;
    while (t--)
        solve();
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 452 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 452 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 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 348 KB Output is correct
2 Correct 1 ms 452 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 6 ms 604 KB Output is correct
11 Correct 4 ms 460 KB Output is correct
12 Correct 6 ms 600 KB Output is correct
13 Correct 2 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 452 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 6 ms 604 KB Output is correct
11 Correct 4 ms 460 KB Output is correct
12 Correct 6 ms 600 KB Output is correct
13 Correct 2 ms 604 KB Output is correct
14 Correct 615 ms 20872 KB Output is correct
15 Correct 527 ms 15672 KB Output is correct
16 Correct 692 ms 20024 KB Output is correct
17 Correct 131 ms 10916 KB Output is correct