Code:

#include <cstdio>
#include <algorithm>
#include <cstring>
#define setIO(s) freopen(s".in","r",stdin)
#define maxn 1000000
#define ll long long
using namespace std;
char str[maxn];
int arr[maxn],pos[maxn],x[maxn],rk[maxn],sa[maxn],c[maxn],height[maxn];
ll C[maxn],brr[maxn];
int n,m;
struct SA{
void qsort(){
for(int i=0;i<=m;++i) c[i]=0;
for(int i=1;i<=n;++i) ++c[rk[pos[i]]];
for(int i=1;i<=m;++i) c[i]+=c[i-1];
for(int i=n;i>=1;--i) sa[c[rk[pos[i]]]--]=pos[i];
}
void build(){
for(int i=1;i<=n;++i) rk[i]=arr[i],pos[i]=i;
qsort();
for(int k=1;k<=n;k<<=1){
int num=0;
for(int i=n-k+1;i<=n;++i) pos[++num]=i;
for(int i=1;i<=n;++i) if(sa[i]>k) pos[++num]=sa[i]-k;
qsort();
swap(rk,pos);
rk[sa[1]]=1,num=1;
for(int i=2;i<=n;++i)
rk[sa[i]]=(pos[sa[i]]==pos[sa[i-1]]&&pos[sa[i]+k]==pos[sa[i-1]+k])?num:++num;
if(num==n) break;
m=num;
}
}
void get_height(){
int k=1;
for(int i=1;i<=n;++i) rk[sa[i]]=i;
for(int i=1;i<=n;++i){
if(k) --k;
int j=sa[rk[i]-1];
while(arr[i+k]==arr[j+k]) ++k;
height[rk[i]]=k;
}
}
}T;
int main(){
//setIO("input");
scanf("%s",str),n=strlen(str),m=128;
for(int i=1;i<=n;++i) arr[i]=str[i-1];
T.build(),T.get_height();
for(int i=1;i<=n;++i) brr[i]=n-sa[i]+1-height[i];
for(int i=1;i<=n;++i) C[i]=C[i-1]+brr[i];
int q; long long opt; scanf("%d",&q);
while(q--){
scanf("%lld",&opt);
int l=1,r=n,mid,ans=0;
while(l<=r) {
mid=(l+r)>>1;
if(C[mid]>=opt) ans=mid,r=mid-1;
else l=mid+1;
}
for(int i=sa[ans];i<=n-(C[ans]-opt);++i) printf("%c",str[i-1]);
printf("\n");
}
return 0;
}

  

最新文章

  1. Linux 通过sendmail 发邮件到外部邮箱
  2. swfUpload 上传图片
  3. Swift - UIViewController
  4. 浅谈config文件的使用
  5. Thymeleaf基本知识
  6. 流媒体学习一-------mediastreamer2 的简介
  7. error LNK2019: 无法解析的外部符号 __imp___CrtDbgReportW
  8. java web 学习十二(session)
  9. PHPCMS V9二次开发]自定义字段模型-文本组
  10. Linux快捷键 Linux权限
  11. 学习笔记TF055:TensorFlow神经网络简单实现一元二次函数
  12. PDB文件详解
  13. react学习二 生命周期
  14. 入门项目 A3 src 主代码
  15. MIT-6.828-JOS-lab6:Network Driver
  16. html 获取鼠标左键事件,滚轮点击事件,右键点击事件
  17. linux文件种类及其扩展名
  18. TopK的一个简单实现
  19. [CTSC2016]时空旅行
  20. python_线程、进程和协程

热门文章

  1. GitHub客户端和Shell的基本操作和理解
  2. angular4(1)angular脚手架
  3. JAXB xml与javaBean的转换
  4. Linux就该这么学 20181003(第四章Vim/shell/测试条件)
  5. Ubuntu16.04+OpenCV3.2.0+Opencv_Contrib3.2.0安装
  6. 创建ios界面的三步骤
  7. Kali linux 2016.2(Rolling)的利用MSF攻击windows小案例(exploits + payloads + taegets)(博主推荐)
  8. (转载)Mac下使用Android Studio 获取 SHA1和MD5
  9. 51nod 1102 面积最大的矩形 &amp;&amp; 新疆大学OJ 1387: B.HUAWEI&#39;s billboard 【单调栈】+【拼凑段】(o(n) 或 o(nlog(n))
  10. python中的json