Submission #938527

#TimeUsernameProblemLanguageResultExecution timeMemory
938527sapientsapiensLozinke (COCI17_lozinke)C++14
100 / 100
294 ms16720 KiB
/* At Most 10 lowercase letters of the English Alphabet -> We should think in terms of the alphabet and the orientation What is the fastest, most efficient way to check if one string is a subset of another Of course there isn't some magical way to compare two strings. The solution: Don't compare two strings. Have a frequency array of how many each substring appears */ #include <iostream> #include <string> #include <utility> #include <string> #include <map> using namespace std; int n; string str[20005]; map<string, int> mp; int main() { cin >> n; for(int i = 0; i < n; i++) { cin >> str[i]; map<string, int> temp; for(int j = 0; j < str[i].size(); j++) { for(int k = j; k < str[i].size(); k++) { string exp; for(int l = j; l <= k; l++) { exp += str[i][l]; } temp[exp] = 1; } } for (const auto &p : temp) { // Now you can access the key using p.first and the value using p.second mp[p.first] ++; // Example operation } } int ans = 0; for(int i = 0; i < n; i++) { ans += mp[str[i]] -1; } cout << ans; return 0; }

Compilation message (stderr)

lozinke.cpp: In function 'int main()':
lozinke.cpp:25:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |         for(int j = 0; j < str[i].size(); j++) {
      |                        ~~^~~~~~~~~~~~~~~
lozinke.cpp:26:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |             for(int k = j; k < str[i].size(); k++) {
      |                            ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...