Submission #2549107


Source Code Expand

#include<bits/stdc++.h>
#define infll 2000000000000000000LL
using namespace std;

char str[1000005];
long long dp[1000005];
int last[1000005];

vector<int> cl[26];
int p[26];

int main(){
	scanf("%s", str);
	int n = (int)strlen(str);
	long long m;
	scanf("%lld",&m);
	dp[n] = 1; dp[n+1] = 0;
	for(int i=0;i<26;i++) last[i] = n;
	for(int i=n-1;i>=0;i--){
		last[str[i]-'a'] = i;
		dp[i] = 1;
		for(int j=0;j<26;j++){
			dp[i] = min(infll, dp[i] + dp[last[j]+1]);
		}
	}
	for(int i=0;i<n;i++){
		//printf("%lld ", dp[i]);
		cl[str[i]-'a'].push_back(i);
	}
	//printf("\n");
	for(int i=0;i<26;i++) cl[i].push_back(n);
	m++;
	if(dp[0] < m){
		printf("Eel\n");
		return 0;
	}
	int now = -1;
	while(now < n){
		///printf("%d %lld\n", now, m);
		if(m == 1){
			printf("\n");
			break;
		}else{
			m--;
		}
		for(int i=0;i<26;i++){
			while(now >= cl[i][p[i]]) p[i]++;
			if(m <= dp[cl[i][p[i]]+1]){
				//printf("%c %d %lld\n", 'a'+i, cl[i][p[i]], dp[cl[i][p[i]]+1]);
				printf("%c", 'a'+i);
				now = cl[i][p[i]]; 
				break;
			}else{
				m -= dp[cl[i][p[i]]+1];
			}
		}
	}
}

Submission Info

Submission Time
Task G - 辞書順
User jihoon
Language C++14 (GCC 5.4.1)
Score 4
Code Size 1128 Byte
Status AC
Exec Time 51 ms
Memory 16072 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:13:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s", str);
                  ^
./Main.cpp:16:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld",&m);
                  ^

Judge Result

Set Name All
Score / Max Score 4 / 4
Status
AC × 5
Set Name Test Cases
All 00, 01, 02, 90, 91
Case Name Status Exec Time Memory
00 AC 51 ms 16072 KB
01 AC 3 ms 4352 KB
02 AC 2 ms 4352 KB
90 AC 2 ms 4352 KB
91 AC 2 ms 4352 KB