Submission #236867

#TimeUsernameProblemLanguageResultExecution timeMemory
236867DanShadersLozinke (COCI17_lozinke)C++17
90 / 100
1085 ms2200 KiB
#pragma GCC optimize("O3")
#pragma GCC target("sse,sse2,ssse3,sse4.1,sse4.2,avx,avx2")

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;

#define all(x) begin(x), end(x)
#define x first
#define y second
typedef long long ll;
typedef long double ld;

template<typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

template<typename T>
using normal_queue = priority_queue<T, vector<T>, greater<T>>;

multiset<string> data_;

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n;
	cin >> n;
	for (int i = 0; i < n; ++i) {
		string s;
		cin >> s;
		data_.insert(s);
	}
	int64_t ans = 0;
	for (string s : data_) {
		int sz = (int) s.size();
		set<string> ss;
		for (int j = 0; j < sz; ++j)
			for (int h = 1; h <= sz - j; ++h)
				ss.insert(s.substr(j, h));
		for (string t : ss)
			ans += data_.count(t);
	}
	cout << ans - n << "\n";
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...