Submission #433546

#TimeUsernameProblemLanguageResultExecution timeMemory
433546misirPalindromes (APIO14_palindrome)C++14
73 / 100
1078 ms23360 KiB
#include <bits/stdc++.h> using namespace std; #define INF 1<<30 #define endl '\n' #define maxn 100005 #define tc prllf("Case %d: ", cs) #define tcn prllf("Case %d:\n", cs); #define FASTIO ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0); typedef long long ll; const double PI = acos(-1.0); #define dbg1(x) cerr << #x << " = " << x << endl; #define dbg2(x, y) cerr << #x << " = " << x << ", " << #y << " = " << y << endl; #define dbg3(x, y, z) cerr << #x << " = " << x << ", " << #y << " = " << y << ", " << #z << " = " << z << endl; #define dbg4(w,x, y, z) cerr << #w << " = " << w << ", " <<#x << " = " << x << ", " << #y << " = " << y << ", " << #z << " = " << z << endl; template < typename F, typename S > ostream& operator << ( ostream& os, const pair< F, S > & p ) { return os << "(" << p.first << ", " << p.second << ")"; } template < typename T > ostream &operator << ( ostream & os, const vector< T > &v ) { os << "{"; for (auto it = v.begin(); it != v.end(); ++it) { if ( it != v.begin() ) os << ", "; os << *it; } return os << "}"; } template < typename T > ostream &operator << ( ostream & os, const set< T > &v ) { os << "["; for (auto it = v.begin(); it != v.end(); ++it) { if ( it != v.begin()) os << ", "; os << *it; } return os << "]"; } template < typename F, typename S > ostream &operator << ( ostream & os, const map< F, S > &v ) { os << "["; for (auto it = v.begin(); it != v.end(); ++it) { if ( it != v.begin() ) os << ", "; os << it -> first << " = " << it -> second ; } return os << "]"; } #define dbg(args...) do {cerr << #args << " : "; faltu(args); } while(0) clock_t tStart = clock(); #define timeStamp dbg("Execution Time: ", (double)(clock() - tStart)/CLOCKS_PER_SEC) void faltu () { cerr << endl; } template <typename T> void faltu( T a[], ll n ) { for (ll i = 0; i < n; ++i) cerr << a[i] << ' '; cerr << endl; } template <typename T, typename ... hello> void faltu( T arg, const hello &... rest) { cerr << arg << ' '; faltu(rest...); } // Program showing a policy-based data structure. #include <ext/pb_ds/assoc_container.hpp> // Common file #include <ext/pb_ds/tree_policy.hpp> #include <functional> // for less #include <iostream> using namespace __gnu_pbds; using namespace std; // GNU link : https://goo.gl/WVDL6g typedef tree<ll, null_type, less_equal<ll>, rb_tree_tag, tree_order_statistics_node_update> new_data_set; /**___________________________________________________**/ const ll N = 100005; ll idx, t; ll link[N]; ll len[N]; ll tr[N][26]; string s; ll occ[N]; void initTree() { memset(tr, 0, sizeof tr); memset(link, 0, sizeof link); memset(len, 0, sizeof len); len[1] = -1; link[1] = 1; len[2] = 0; link[2] = 1; idx = 2; t = 2; } void addletter(ll pos) { while (s[pos - len[t] - 1] != s[pos]) t = link[t]; ll x = link[t]; while (s[pos - len[x] - 1] != s[pos]) x = link[x]; ll c = s[pos] - 'a'; if (!tr[t][c]) { tr[t][c] = ++idx; len[idx] = len[t] + 2; link[idx] = len[idx] == 1 ? 2 : tr[x][c]; } t = tr[t][c]; occ[t]++; } //https://vjudge.net/problem/HDU-3948 int main() { //FASTIO /* #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); freopen("error.txt", "w", stderr); #endif //*/ ll T; // scanf("%d", &T); T = 1; for (ll cs = 1; cs <= T; cs++) { initTree(); cin >> s; s = ' ' + s; ll n = s.size(); for (ll i = 1; i < n; i++) { addletter(i); } // prllf("Case #%d: %d\n", cs, idx - 2); } // for (ll i = idx; i > 2; i--) ll ans = 0; for (ll i = idx; i > 2; i--) { occ[link[i]] += occ[i]; ans = max(ans, len[i] * occ[i]); } cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...