Submission #229555

#TimeUsernameProblemLanguageResultExecution timeMemory
229555Uzumaki_NaturooRima (COCI17_rima)C++14
56 / 140
835 ms262148 KiB
/// You just can't beat the person who never gives up /// ICPC next year #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #include<bits/stdc++.h> using namespace std ; const int N = 3e6+5 ; int n ,m ,sz ; map<int,int> to[N] ; char str[N] ; bool en[N] ; void insert_str(){ int cur = 0 ; for(int i=0;i<m;++i){ int cc = str[i] - 'a' ; if(!to[cur][cc]) to[cur][cc] = ++sz ; cur = to[cur][cc] ; } en[cur] = 1 ; } int mem[N][2] ; int dfs(int cur,bool is){ int&ret = mem[cur][is]; if(~ret) return ret; ret = 0 ; if(!is){ for(int i=0;i<26;++i) if(to[cur][i]) ret = max(ret ,dfs(to[cur][i],0)) ; } int here = 0 ; for(int i=0;i<26;++i) if(to[cur][i]) here += en[to[cur][i]] ; if(!here) return ret ; ret = max(ret,here) ; for(int i=0;i<26;++i) if(to[cur][i] && en[to[cur][i]]) ret = max(ret ,here + dfs(to[cur][i],1)) ; return ret ; } int main(){ scanf("%d",&n); for(int i=0;i<n;++i){ scanf("%s",str); m = strlen(str) ; reverse(str,str+m); insert_str(); } memset(mem,-1,sizeof mem); printf("%d",dfs(0,0)); return 0; }

Compilation message (stderr)

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