Submission #876906

#TimeUsernameProblemLanguageResultExecution timeMemory
876906resfastSelling RNA Strands (JOI16_selling_rna)C++17
60 / 100
1526 ms8800 KiB
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;

#define islam_zymchybekov void solve()
#define ios ios::sync_with_stdio(false); cin.tie(NULL);
#define pb push_back
#define all(x) x.begin(), x.end()
#define endl '\n'
#define int long long

islam_zymchybekov{
    ios;
    int n, m;
    cin >> n >> m;

    if (n < 5001) {
        vector<string> v(n);
        for (int i = 0; i < n; ++i)
            cin >> v[i];

        for (int i = 0; i < m; ++i) {
            string s, s1;
            cin >> s >> s1;
            int ans = 0;
            int len_s = s.size();
            int len_s1 = s1.size();

            for (int j = 0; j < n; ++j) {
                if (v[j].size() >= max(len_s, len_s1)) {
                    if (v[j].substr(0, len_s) == s && v[j].substr(v[j].size() - len_s1) == s1) {
                        ++ans;
                    }
                }
            }
            cout << ans << '\n';
        }
    } else {
        unordered_map<string, int> mp;

        for (int i = 0; i < n; ++i) {
            string s;
            cin >> s;
            mp[s]++;
        }

        for (int i = 0; i < m; ++i) {
            string s, s1;
            cin >> s >> s1;
            int ans = 0;
            int len_s = s.size();
            int len_s1 = s1.size();

            for (auto &it : mp) {
                string curr = it.first;
                int len_curr = curr.size();

                if (len_curr >= max(len_s, len_s1)) {
                    if (curr.substr(0, len_s) == s && curr.substr(len_curr - len_s1) == s1) {
                        ans += it.second;
                    }
                }
            }
            cout << ans << '\n';
        }
    }
    cout << flush;
}

int32_t main() {
    int T = 1;
    while (T--) {
        solve();
    }
    return 0;
}

Compilation message (stderr)

selling_rna.cpp: In function 'void solve()':
selling_rna.cpp:31:33: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'const long long int' [-Wsign-compare]
   31 |                 if (v[j].size() >= max(len_s, len_s1)) {
      |                     ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...