ABC097 C K-th Substring

ABC097 C K-th Substring

問題概要

リンク参照

考察

  • N=|s|とおくとO\left(N^2  \right)に見えてO\left(N^3  \right)だった....
    (文字列比較にO\left(N  \right))かかるやん・・・(´・ω・`)
  • 得られた知見:答えの文字列の長さが高々Kであること

ソースコード

#include<algorithm>
#include<bitset>
#include<cassert>
#include<cfloat>
#include<climits>
#include<cmath>
#include<deque>
#include<functional>
#include<iomanip>
#include<iostream>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<string>
#include<unordered_map>
#include<unordered_set>
#include<utility>
#include<vector>


using namespace std;


/******************************************************************************************/



int main() {

	cin.tie(0);
	ios::sync_with_stdio(false);
	cout << fixed << setprecision(10);

	string s;
	int k;
	cin >> s >> k;

	int n = s.size();
	set<string> st;
	for (int i = 1; i <= k; i++)
	{
		//i文字の部分文字列
		for (int j = 0; j < n; j++)
		{
			if (j + i > n)continue;
			st.insert(s.substr(j, i));
		}
	}
	int cnt = 1;
	for (auto itr : st) {
		if (cnt == k) {
			cout << itr << endl;
			return 0;
		}
		cnt++;
	}
	return 0;
}