제출 #122355

#제출 시각아이디문제언어결과실행 시간메모리
122355bekzhan29Palindromic Partitions (CEOI17_palindromic)C++14
100 / 100
90 ms26788 KiB
#include <bits/stdc++.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <unordered_map>
#include <set>
#include <queue>
using namespace std;
#define pb push_back
#define mp make_pair
#define INF 1e9
#define mod 1000000007
#define eps 1e-6
#define abs(x) ((x)>=0?(x):-(x))
#define y1 solai
#define fi first
#define se second
typedef long long ll;
void read(ll &x)
{
	scanf("%lld",&x);
}
void read(ll &x, ll &y)
{
	scanf("%lld%lld",&x,&y);
}
void read(ll &x, ll &y, ll &z)
{
	scanf("%lld%lld%lld",&x,&y,&z);
}
void print(ll x)
{
	printf("%lld ",x);
}
void println(ll x)
{
	printf("%lld\n",x);
}
const ll N=1000100;
ll t,n,ans,p[N],h[N],l,r,len;
char s[N];
int main()
{
	cin>>t;
	p[0]=1;
	for(ll i=1;i<N;i++)
		p[i]=p[i-1]*197;
	for(;t--;)
	{
		scanf("\n%s",s);
		n=strlen(s);
		for(ll i=1;i<=n;i++)
			h[i]=h[i-1]+s[i-1]*p[i];
		l=1,r=n;
		ans=0;
		for(ll i=1;i<=n/2;i++)
		{
			len=i-l+1;
			if((h[i]-h[l-1])*p[r-i]==h[r]-h[r-len])
			{
				ans+=2;
				l+=len;
				r-=len;
			}
		}
		if(l<=r)
			ans++;
		println(ans);
	}
}

컴파일 시 표준 에러 (stderr) 메시지

palindromic.cpp: In function 'void read(ll&)':
palindromic.cpp:22:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld",&x);
  ~~~~~^~~~~~~~~~~
palindromic.cpp: In function 'void read(ll&, ll&)':
palindromic.cpp:26:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld%lld",&x,&y);
  ~~~~~^~~~~~~~~~~~~~~~~~
palindromic.cpp: In function 'void read(ll&, ll&, ll&)':
palindromic.cpp:30:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld%lld%lld",&x,&y,&z);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
palindromic.cpp: In function 'int main()':
palindromic.cpp:51:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("\n%s",s);
   ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...