Submission #2496246
Source Code Expand
#include<cstdio>
#include<cstring>
using namespace std;
const int N = 3*1e5+10;
char s[N];
int root,last,sz,ch[N][26],fa[N],sum[N],l[N];
void add(int x) {
int c=s[x]-'a';
int p=last,np=++sz; last=np;
l[np]=x+1;
for(;p&&!ch[p][c];p=fa[p]) ch[p][c]=np;
if(!p) fa[np]=root;
else {
int q=ch[p][c];
if(l[p]+1==l[q]) fa[np]=q;
else {
int nq=++sz; l[nq]=l[p]+1;
memcpy(ch[nq],ch[q],sizeof(ch[q]));
fa[nq]=fa[q];
fa[np]=fa[q]=nq;
for(;p&&q==ch[p][c];p=fa[p]) ch[p][c]=nq;
}
}
}
int n,m,b[N],cnt[N];
void get_sum() {
for(int i=1;i<=sz;i++) cnt[l[i]]++;
for(int i=1;i<=n;i++) cnt[i]+=cnt[i-1];
for(int i=1;i<=sz;i++) b[cnt[l[i]]--]=i;
for(int i=sz;i;i--) {
int p=b[i]; sum[p]=1;
for(int j=0;j<26;j++)
sum[p]+=sum[ch[p][j]];
}
}
int main() {
scanf("%s",s);
n=strlen(s);
root=last=++sz;
for(int i=0;i<n;i++) add(i);
get_sum();
m=1;
while(m--) {
int x,p=root; scanf("%d",&x);
while(x) {
for(int c=0;c<26;c++)if(ch[p][c]) {
if(sum[ch[p][c]]>=x) {
putchar('a'+c);
x--; p=ch[p][c];
break;
}
else x-=sum[ch[p][c]];
}
}
puts("");
}
return 0;
}
Submission Info
Submission Time
2018-05-12 21:09:20+0900
Task
C - K-th Substring
User
Vexoben
Language
C++14 (GCC 5.4.1)
Score
300
Code Size
1460 Byte
Status
AC
Exec Time
2 ms
Memory
6400 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:42:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%s",s);
^
./Main.cpp:49:37: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int x,p=root; scanf("%d",&x);
^
Judge Result
Set Name
Sample
Subtask
All
Score / Max Score
0 / 0
200 / 200
100 / 100
Status
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
4224 KB
0_001.txt
AC
1 ms
4224 KB
0_002.txt
AC
1 ms
4224 KB
1_003.txt
AC
1 ms
4224 KB
1_004.txt
AC
1 ms
4224 KB
1_005.txt
AC
1 ms
4224 KB
1_006.txt
AC
1 ms
4224 KB
1_007.txt
AC
1 ms
4224 KB
1_008.txt
AC
1 ms
4224 KB
1_009.txt
AC
1 ms
4224 KB
1_010.txt
AC
1 ms
4224 KB
2_011.txt
AC
2 ms
6400 KB
2_012.txt
AC
2 ms
6400 KB
2_013.txt
AC
2 ms
6400 KB
2_014.txt
AC
2 ms
6400 KB
2_015.txt
AC
2 ms
6400 KB
2_016.txt
AC
2 ms
6400 KB
2_017.txt
AC
2 ms
6400 KB
2_018.txt
AC
2 ms
6400 KB