# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
604026 |
2022-07-24T15:32:44 Z |
inksamurai |
Savez (COCI15_savez) |
C++17 |
|
342 ms |
63116 KB |
#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
#define rng(i,c,n) for(int i=(c);i<n;i++)
#define per(i,n) for(int i=n-1;i>=0;i--)
#define fi first
#define se second
#define pb push_back
#define sz(a) (int)a.size()
#define vec(...) vector<__VA_ARGS__>
#define _3aFGabX ios::sync_with_stdio(0),cin.tie(0)
typedef long long ll;
using pii=pair<int,int>;
using vi=vector<int>;
void print(){cout<<'\n';}
template<class h,class...t>
void print(const h&v,const t&...u){cout<<v<<' ',print(u...);}
// e
// kactl : Z function
vi Z(string S) {
vi z(sz(S));
int l = -1, r = -1;
rng(i,1,sz(S)) {
z[i] = i >= r ? 0 : min(r - i, z[i - l]);
while (i + z[i] < sz(S) && S[i + z[i]] == S[z[i]])
z[i]++;
if (i + z[i] > r)
l = i, r = i + z[i];
}
return z;
}
signed main(){
_3aFGabX;
int n;
cin>>n;
vec(string) a,tmp;
rep(i,n){
string s;
cin>>s;
a.pb(s);
string rs=s;
reverse(rs.begin(), rs.end());
tmp.pb(rs);
}
sort(tmp.begin(), tmp.end());
tmp.erase(unique(tmp.begin(), tmp.end()),tmp.end());
const int m=sz(tmp);
// sort(a.begin(), a.end(),[&](const string&l,const string&r){
// return sz(l)<sz(r);
// });
vi dp(m,0);
rep(i,n){
vi z=Z(a[i]);
// rep(j,sz(a[i])){
// cout<<z[j]<<" ";
// }
// print("....");
string rs=a[i];
reverse(rs.begin(), rs.end());
int id=(int)(lower_bound(tmp.begin(), tmp.end(),rs)-tmp.begin());
string now="";
int res=dp[id];
per(j,sz(a[i])){
now+=a[i][j];
if(!j or z[j]==sz(a[i])-j){
int ni=(int)(lower_bound(tmp.begin(), tmp.end(),now)-tmp.begin());
// if(i==2) print(ni);
res=max(res,dp[ni]+1);
}
}
dp[id]=res;
// print(id,dp[id],a[i]);
}
print(*max_element(dp.begin(), dp.end()));
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
380 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
2 ms |
468 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
46 ms |
2260 KB |
Output is correct |
2 |
Correct |
83 ms |
2368 KB |
Output is correct |
3 |
Correct |
271 ms |
2516 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
468 KB |
Output is correct |
2 |
Correct |
139 ms |
3032 KB |
Output is correct |
3 |
Correct |
191 ms |
2448 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
52 ms |
3064 KB |
Output is correct |
2 |
Correct |
53 ms |
3064 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
68 ms |
4020 KB |
Output is correct |
2 |
Correct |
63 ms |
4012 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
56 ms |
5436 KB |
Output is correct |
2 |
Correct |
49 ms |
5380 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
84 ms |
8112 KB |
Output is correct |
2 |
Correct |
73 ms |
7820 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
111 ms |
15568 KB |
Output is correct |
2 |
Correct |
103 ms |
15572 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
172 ms |
25612 KB |
Output is correct |
2 |
Correct |
159 ms |
25540 KB |
Output is correct |
3 |
Correct |
342 ms |
63116 KB |
Output is correct |