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 |
|
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 |