# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
938527 | sapientsapiens | Lozinke (COCI17_lozinke) | C++14 | 294 ms | 16720 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
/*
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)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |