Caso # | Resultado | Tiempo | Memoria |
---|---|---|---|
#1 |
Correcto
|
0.007 s | 1 KBi |
#2 |
Correcto
|
0.004 s | 2 KBi |
#3 |
Correcto
|
0.007 s | 1 KBi |
#4 |
Correcto
|
0.005 s | 1 KBi |
#5 |
Correcto
|
0.006 s | 1 KBi |
#6 |
Correcto
|
0.008 s | 1 KBi |
#7 |
Correcto
|
0.009 s | 2 KBi |
#8 |
Correcto
|
0.01 s | 1 KBi |
#9 |
Correcto
|
0.009 s | 2 KBi |
#10 |
Correcto
|
0.01 s | 2 KBi |
#11 |
Correcto
|
0.009 s | 2 KBi |
#12 |
Correcto
|
0.009 s | 2 KBi |
#13 |
Correcto
|
0.011 s | 2 KBi |
#14 |
Correcto
|
0.011 s | 2 KBi |
#15 |
Correcto
|
0.011 s | 2 KBi |
#16 |
Correcto
|
0.011 s | 2 KBi |
#17 |
Correcto
|
0.013 s | 2 KBi |
#18 |
Correcto
|
0.012 s | 2 KBi |
#19 |
Correcto
|
0.011 s | 2 KBi |
#20 |
Correcto
|
0.009 s | 2 KBi |
#21 |
Correcto
|
0.011 s | 2 KBi |
#22 |
Correcto
|
0.009 s | 1 KBi |
#include <bits/stdc++.h> #define fi first #define se second #define forn(i,n) for(int i=0; i< (int)n; ++i) #define for1(i,n) for(int i=1; i<= (int)n; ++i) #define fore(i,l,r) for(int i=(int)l; i<= (int)r; ++i) #define ford(i,n) for(int i=(int)(n) - 1; i>= 0; --i) #define fored(i,l,r) for(int i=(int)r; i>= (int)l; --i) #define pb push_back #define el '\n' #define d(x) cout<< #x<< " " << x<<el #define ri(n) scanf("%d",&n) #define sz(v) ((int)v.size()) #define all(v) v.begin(),v.end() #define allr(v) v.rbegin(),v.rend() using namespace std; typedef long long ll; typedef double ld; typedef pair<int,int> ii; typedef pair<char,int> pci; typedef tuple<int, int, int> tiii; typedef pair<ll,ll> pll; typedef vector<int> vi; const int inf = 1e9; const int nax = 1e5+200; const ld pi = acos(-1); const ld eps= 1e-9; int dr[] = {1,-1,0, 0,1,-1,-1, 1}; int dc[] = {0, 0,1,-1,1, 1,-1,-1}; vector<int> get_phi(string &s) { // O(|s|) int j = 0, n = sz(s); vi pi(n); for1(i,n-1){ while (j > 0 && s[i] != s[j]) j = pi[j-1]; j += (s[i] == s[j]); pi[i] = j; } return pi; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cout<< setprecision(20)<< fixed; string s; cin>> s; vi p = get_phi(s); int n = sz(s); cout<< p.back() <<el; }