Submission #305407

#TimeUsernameProblemLanguageResultExecution timeMemory
305407FlashGamezzzRima (COCI17_rima)C++17
140 / 140
306 ms65724 KiB
#include <iostream> #include <cstdlib> #include <cstdio> #include <fstream> #include <algorithm> #include <string> #include <utility> #include <vector> #include <queue> using namespace std; bool endw[3000000] = {}; int lets[3000000][26] = {}, dp[3000000] = {}, sz = 1, ans = 0; string s; void add(int c, int i){ if (i == s.length()){ endw[c] = true; return; } int l = int(s[s.length()-i-1])-97; if (lets[c][l] == 0){ lets[c][l] = sz; sz++; } add(lets[c][l], i+1); } void solve(int c){ vector<int> vals; for (int i = 0; i < 26; i++){ if (lets[c][i] > 0){ solve(lets[c][i]); if (endw[lets[c][i]]){ dp[c]++; vals.push_back(dp[lets[c][i]]); } } } sort(vals.begin(), vals.end()); if (vals.size() >= 1){ dp[c] += vals[vals.size()-1]; } int t = dp[c]; if (endw[c]){ t++; } if (vals.size() >= 2){ t += vals[vals.size()-2]; } ans = max(ans, t); } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; for (int i = 0; i < n; i++){ cin >> s; add(0, 0); } solve(0); cout << ans << endl; }

Compilation message (stderr)

rima.cpp: In function 'void add(int, int)':
rima.cpp:18:8: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |  if (i == s.length()){
      |      ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...