Submission #701240

#TimeUsernameProblemLanguageResultExecution timeMemory
701240tamthegodRima (COCI17_rima)C++17
42 / 140
1058 ms70160 KiB
// Make the best become better // No room for laziness #include<bits/stdc++.h> #define int long long #define pb push_back #define fi first #define se second using namespace std; using ll = long long; using ld = long double; using ull = unsigned long long; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int maxN = 1e6 + 5; const int mod = 1e9 + 7; const ll oo = 1e18; int n; string s[maxN]; map<int, int> f; const int base = 234744; int dp[maxN]; void ReadInput() { cin >> n; for(int i=1; i<=n; i++) { cin >> s[i]; reverse(s[i].begin(), s[i].end()); s[i] = ' ' + s[i]; } sort(s + 1, s + n + 1, [](string p, string q) { return p.size() > q.size(); }); } void Solve() { int res = 0; for(int i=1; i<=n; i++) { int val = 0; for(int j=1; j<s[i].size(); j++) dp[j] = (dp[j - 1] * base + s[i][j]) % mod; val = max(f[dp[s[i].size() - 1]], f[dp[s[i].size() - 2]]); val++; f[dp[s[i].size() - 1]] = val; f[dp[s[i].size() - 2]] = val; res = max(res, val); } cout << res; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); ReadInput(); Solve(); }

Compilation message (stderr)

rima.cpp: In function 'void Solve()':
rima.cpp:42:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |         for(int j=1; j<s[i].size(); j++)
      |                      ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...