Submission #57632650
Source Code Expand
/* _ ____ */
/* AC U /"\ u U /"___| AC */
/* \/ _ \/ \| | u */
/* AC / ___ \ | |/__ AC */
/* /_/ \_\ \____| */
/* AC \\ >> _// \\ AC */
/* (__) (__)(__)(__) */
/* github.com/romophic/Compro */
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#define int long long
#define double long double
#define rep(i, e) for (int i = 0; i < (int)(e); i++)
#define rrep(i, b, e) for (int i = (b); i < (int)(e), i++)
#define all(var) begin(var), end(var)
using namespace std;
constexpr int INF = 1LL << 60;
constexpr array<int, 4> dx({1, 0, 0, -1}), dy({0, 1, -1, 0});
template <class T>
ostream &operator<<(ostream &_ostr, const vector<T> &_v);
template <class T>
ostream &operator<<(ostream &_ostr, const deque<T> &_v);
template <class T>
ostream &operator<<(ostream &_ostr, const list<T> &_v);
template <class T, class Y>
ostream &operator<<(ostream &_ostr, const pair<T, Y> &_v);
template <class... Ts>
ostream &operator<<(ostream &_ostr, const tuple<Ts...> &t);
template <class T, class Y>
ostream &operator<<(ostream &_ostr, const map<T, Y> &_v);
template <class T, class Y>
ostream &operator<<(ostream &_ostr, const multimap<T, Y> &_v);
template <class T, class Y>
ostream &operator<<(ostream &_ostr, const unordered_map<T, Y> &_v);
template <class T, class Y>
ostream &operator<<(ostream &_ostr, const unordered_multimap<T, Y> &_v);
template <class T>
ostream &operator<<(ostream &_ostr, const set<T> &_v);
template <class T>
ostream &operator<<(ostream &_ostr, const multiset<T> &_v);
template <class T>
ostream &operator<<(ostream &_ostr, const unordered_set<T> &_v);
template <class T>
ostream &operator<<(ostream &_ostr, const unordered_multiset<T> &_v);
template <class T>
ostream &_orange(ostream &_ostr, const T &_v) {
_ostr << "[";
bool tr = true;
for (auto &&i : _v)
_ostr << (tr ? tr = false, "" : ", ") << i;
return _ostr << "]";
}
template <class T>
ostream &operator<<(ostream &_ostr, const vector<T> &_v) { return _orange(_ostr, _v); }
template <class T>
ostream &operator<<(ostream &_ostr, const deque<T> &_v) { return _orange(_ostr, _v); }
template <class T>
ostream &operator<<(ostream &_ostr, const list<T> &_v) { return _orange(_ostr, _v); }
template <class T, class Y>
ostream &operator<<(ostream &_ostr, const pair<T, Y> &_v) { return _ostr << "(" << _v.first << ", " << _v.second << ")"; }
template <class... Ts>
ostream &operator<<(ostream &_ostr, const tuple<Ts...> &_v) {
bool tr = true;
_ostr << "(";
apply([&_ostr, &tr](auto &&...args) {
auto print = [&](auto &&val) {
if (!tr)
_ostr << ", ";
_ostr << val;
tr = false;
};
(print(args), ...);
},
_v);
return _ostr << ")";
}
template <class T, class Y>
ostream &operator<<(ostream &_ostr, const map<T, Y> &_v) { return _orange(_ostr, _v); }
template <class T, class Y>
ostream &operator<<(ostream &_ostr, const multimap<T, Y> &_v) { return _orange(_ostr, _v); }
template <class T, class Y>
ostream &operator<<(ostream &_ostr, const unordered_map<T, Y> &_v) { return _orange(_ostr, _v); }
template <class T>
ostream &operator<<(ostream &_ostr, const set<T> &_v) { return _orange(_ostr, _v); }
template <class T>
ostream &operator<<(ostream &_ostr, const multiset<T> &_v) { return _orange(_ostr, _v); }
template <class T>
ostream &operator<<(ostream &_ostr, const unordered_set<T> &_v) { return _orange(_ostr, _v); }
template <class T>
ostream &operator<<(ostream &_ostr, const unordered_multiset<T> &_v) { return _orange(_ostr, _v); }
template <class T>
istream &operator>>(istream &_istr, vector<T> &_v);
template <class T>
istream &operator>>(istream &_istr, deque<T> &_v);
template <class T, class Y>
istream &operator>>(istream &_istr, pair<T, Y> &_v);
template <class T>
istream &_irange(istream &_istr, T &_v) {
for (auto &i : _v)
_istr >> i;
return _istr;
}
template <class T>
istream &operator>>(istream &_istr, vector<T> &_v) { return _irange(_istr, _v); }
template <class T>
istream &operator>>(istream &_istr, deque<T> &_v) { return _irange(_istr, _v); }
template <class T, class Y>
istream &operator>>(istream &_istr, pair<T, Y> &_v) { return _istr >> _v.first >> _v.second; }
template <class T>
bool chmax(T &a, const T &b) { return a < b ? a = b, 1 : 0; }
template <class T>
bool chmin(T &a, const T &b) { return a > b ? a = b, 1 : 0; }
struct init {
init() {
cin.tie(0)->sync_with_stdio(0);
ios::sync_with_stdio(false);
cout << fixed << setprecision(16);
}
} init;
signed main() {
int n, k;
cin >> n >> k;
string s;
cin >> s;
vector mem(n+1, vector<int>(26, -1)); // [i][j]: ithより右にある文字jのindex
rep(i,26)
mem[n][i] = n;
for(int i=n-1;i>=0;i--){
for(int j=0;j<26;j++){
if(s[i]-'a' == j){
mem[i][j] = i;
}else{
mem[i][j] = mem[i+1][j];
}
}
}
string ans;
int pos = 0;
for(int i=0;i<k;i++){
for(int j=0;j<26;j++){
int nexp = mem[pos][j];
int maxl = n-nexp+i;
if(maxl >= k){
ans += ('a' + j);
pos = nexp+1;
break;
}
}
}
cout<<ans<<endl;
}
Submission Info
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
5 / 5 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_00.txt, 00_sample_01.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 10_random_small_00.txt, 10_random_small_01.txt, 11_random_medium_00.txt, 11_random_medium_01.txt, 12_random_large_00.txt, 12_random_large_01.txt, 13_random_max_00.txt, 13_random_max_01.txt, 13_random_max_02.txt, 20_unique_small_00.txt, 20_unique_small_01.txt, 21_unique_medium_00.txt, 21_unique_medium_01.txt, 22_unique_large_00.txt, 22_unique_large_01.txt, 23_unique_max_00.txt, 23_unique_max_01.txt, 23_unique_max_02.txt, 30_equal_small_00.txt, 30_equal_small_01.txt, 31_equal_medium_00.txt, 31_equal_medium_01.txt, 32_equal_large_00.txt, 32_equal_large_01.txt, 33_equal_max_00.txt, 33_equal_max_01.txt, 33_equal_max_02.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_00.txt |
AC |
1 ms |
3408 KiB |
| 00_sample_01.txt |
AC |
1 ms |
3508 KiB |
| 10_random_small_00.txt |
AC |
1 ms |
3424 KiB |
| 10_random_small_01.txt |
AC |
1 ms |
3652 KiB |
| 11_random_medium_00.txt |
AC |
3 ms |
7060 KiB |
| 11_random_medium_01.txt |
AC |
3 ms |
7120 KiB |
| 12_random_large_00.txt |
AC |
14 ms |
22696 KiB |
| 12_random_large_01.txt |
AC |
12 ms |
22096 KiB |
| 13_random_max_00.txt |
AC |
17 ms |
27708 KiB |
| 13_random_max_01.txt |
AC |
16 ms |
27660 KiB |
| 13_random_max_02.txt |
AC |
16 ms |
27336 KiB |
| 20_unique_small_00.txt |
AC |
1 ms |
3568 KiB |
| 20_unique_small_01.txt |
AC |
1 ms |
3512 KiB |
| 21_unique_medium_00.txt |
AC |
6 ms |
11272 KiB |
| 21_unique_medium_01.txt |
AC |
3 ms |
6272 KiB |
| 22_unique_large_00.txt |
AC |
11 ms |
17924 KiB |
| 22_unique_large_01.txt |
AC |
15 ms |
25560 KiB |
| 23_unique_max_00.txt |
AC |
17 ms |
27784 KiB |
| 23_unique_max_01.txt |
AC |
17 ms |
27668 KiB |
| 23_unique_max_02.txt |
AC |
16 ms |
27664 KiB |
| 30_equal_small_00.txt |
AC |
1 ms |
3432 KiB |
| 30_equal_small_01.txt |
AC |
1 ms |
3692 KiB |
| 31_equal_medium_00.txt |
AC |
8 ms |
13684 KiB |
| 31_equal_medium_01.txt |
AC |
3 ms |
6800 KiB |
| 32_equal_large_00.txt |
AC |
14 ms |
21868 KiB |
| 32_equal_large_01.txt |
AC |
15 ms |
25848 KiB |
| 33_equal_max_00.txt |
AC |
16 ms |
27628 KiB |
| 33_equal_max_01.txt |
AC |
16 ms |
27708 KiB |
| 33_equal_max_02.txt |
AC |
17 ms |
27728 KiB |