Submission #362641

#TimeUsernameProblemLanguageResultExecution timeMemory
362641shahriarkhanPalindromic Partitions (CEOI17_palindromic)C++14
100 / 100
284 ms19292 KiB
#include<bits/stdc++.h>
using namespace std ;

const int mx = 1e6 + 5 ;

const long long base = 31 , mod = 1e9 + 7 ;

long long pw[mx] ;

int main()
{
    int t ;
    scanf("%d",&t) ;
    pw[0] = 1 ;
    for(int i = 1 ; i < mx ; ++i)
    {
        pw[i] = (pw[i-1]*base)%mod ;
    }
    while(t--)
    {
        string s ;
        cin>>s ;
        int siz = s.size() , l = 0 , r = siz - 1 , p = 0 , ans = 0 ;
        long long h1 = 0 , h2 = 0 ;
        while(l<r)
        {
            h1 = ((h1*base)%mod + s[l++])%mod ;
            h2 = (h2 + (pw[p++]*s[r--])%mod)%mod ;
            if(h1==h2)
            {
                ans += 2 ;
                h1 = h2 = p = 0 ;
            }
        }
        if(h1 != h2 || l==r) ++ans ;
        printf("%d\n",ans) ;
    }
    return 0 ;
}

Compilation message (stderr)

palindromic.cpp: In function 'int main()':
palindromic.cpp:13:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   13 |     scanf("%d",&t) ;
      |     ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...