Submission #2603247


Source Code Expand

#include <iostream>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <cstdio>


using namespace std;

const char GetKthAlphabet(string& s, int k) {
  vector<char> mins;
  mins.push_back(s[0]);
  for (int i = 1; i < s.size(); ++i) {
    bool is_inserted = false;
    for (int j = 0; j < mins.size(); ++j) {
      if (mins[j] == s[i]) {
	break;
      }
      if (mins[j] > s[i]) {
	mins.insert(mins.begin() + j, s[i]);
	is_inserted = true;
	break;
      }
    }
    if (!is_inserted) {
      mins.push_back(s[i]);
    }
    if (mins.size() > k) {
      mins.resize(k);
    }
  }
  return mins[k-1];
}

int main() {
  string s;
  int K;
  cin >> s;
  cin >> K;

  char a[2] = {'\0'};
  a[0] = GetKthAlphabet(s, 1);
  string kth = string(a);

  if (K == 1) {
    cout << kth << endl;
    return 0;
  }

  int initial = 1;

  for (int i = 2; i <= K; ++i) {
    char min_c;
    bool exists = false;
    for (int j = 0; j < s.size() - kth.size(); ++j) {
      if (s.substr(j, kth.size()) == kth) {
	if (!exists) {
	  min_c = s[j + kth.size()];
	} else {
	  min_c = (s[j + kth.size()] < min_c) ? s[j + kth.size()] : min_c;
	}
	exists = true;
      }
    }
    if (exists) {
      kth += min_c;
    } else {
      char a[2] = {'\0'};
      ++initial;
      a[0] = GetKthAlphabet(s, initial);
      kth = string(a);
    }
  }

  cout << kth << endl;
  
  return 0;
}

Submission Info

Submission Time
Task C - K-th Substring
User dazzhe
Language C++14 (GCC 5.4.1)
Score 300
Code Size 1449 Byte
Status AC
Exec Time 2 ms
Memory 256 KB

Judge Result

Set Name Sample Subtask All
Score / Max Score 0 / 0 200 / 200 100 / 100
Status
AC × 3
AC × 11
AC × 19
Set Name Test Cases
Sample 0_000.txt, 0_001.txt, 0_002.txt
Subtask 0_000.txt, 0_001.txt, 0_002.txt, 1_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt
All 0_000.txt, 0_001.txt, 0_002.txt, 1_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 2_011.txt, 2_012.txt, 2_013.txt, 2_014.txt, 2_015.txt, 2_016.txt, 2_017.txt, 2_018.txt
Case Name Status Exec Time Memory
0_000.txt AC 1 ms 256 KB
0_001.txt AC 1 ms 256 KB
0_002.txt AC 1 ms 256 KB
1_003.txt AC 1 ms 256 KB
1_004.txt AC 1 ms 256 KB
1_005.txt AC 1 ms 256 KB
1_006.txt AC 1 ms 256 KB
1_007.txt AC 1 ms 256 KB
1_008.txt AC 1 ms 256 KB
1_009.txt AC 1 ms 256 KB
1_010.txt AC 1 ms 256 KB
2_011.txt AC 2 ms 256 KB
2_012.txt AC 2 ms 256 KB
2_013.txt AC 2 ms 256 KB
2_014.txt AC 2 ms 256 KB
2_015.txt AC 2 ms 256 KB
2_016.txt AC 2 ms 256 KB
2_017.txt AC 2 ms 256 KB
2_018.txt AC 2 ms 256 KB