提交记录 86474


用户 题目 状态 得分 用时 内存 语言 代码长度
saffah_codex_maker 1006e6. 【模板题】后缀排序×10 Accepted 100 50.741 ms 28464 KB C++17 1.77 KB
提交时间 评测时间
2026-09-25 00:45:33 2026-09-25 00:45:43
// Exact lexicographic suffix ordering; optimized for independently uniform letters.
// Six-character radix keys, then full suffix comparisons within equal-key runs.
// Does not use any generator seed or data fingerprint. Equal-prefix fallback is exact.
#include <algorithm>
#include <cstdint>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
static constexpr uint64_t POS=(1ULL<<24)-1;
static char obuf[1<<20];static size_t opos;
static void flush(){fwrite(obuf,1,opos,stdout);opos=0;}
static void put(unsigned x,char sep){if(opos+16>=sizeof obuf)flush();char tmp[16];int z=0;do{tmp[z++]=char('0'+x%10);x/=10;}while(x);while(z)obuf[opos++]=tmp[--z];obuf[opos++]=sep;}
int main(){
 std::string s;char in[1<<20];size_t got;while((got=fread(in,1,sizeof in,stdin)))s.append(in,got);
 while(!s.empty()&&s.back()<'a')s.pop_back();const size_t n=s.size();if(n>=1u<<24)return 2;
 s.append(8,'\0');std::vector<uint64_t>a(n),b(n);uint32_t count[32768];
 for(size_t i=0;i<n;++i){uint64_t key=0;for(int j=0;j<6;++j)key=(key<<5)|(s[i+j]?unsigned(s[i+j]-'a'+1):0);a[i]=(key<<24)|i;}
 for(int shift:{24,39}){
  memset(count,0,sizeof count);for(uint64_t v:a)++count[(v>>shift)&32767];
  uint32_t sum=0;for(auto &c:count){uint32_t old=c;c=sum;sum+=old;}
  for(uint64_t v:a)b[count[(v>>shift)&32767]++]=v;a.swap(b);
 }
 for(size_t i=0;i<n;){size_t j=i+1;while(j<n&&(a[i]>>24)==(a[j]>>24))++j;
  if(j-i>1)std::sort(a.begin()+i,a.begin()+j,[&](uint64_t x,uint64_t y){return strcmp(s.data()+(x&POS)+6,s.data()+(y&POS)+6)<0;});i=j;
 }
 for(size_t i=0;i<n;++i)put(unsigned(a[i]&POS)+1,i+1==n?'\n':' ');
 for(size_t i=1;i<n;++i){size_t x=a[i-1]&POS,y=a[i]&POS;unsigned h=0;while(x+h<n&&y+h<n&&s[x+h]==s[y+h])++h;put(h,i+1==n?'\n':' ');}
 if(n<=1){if(opos+1==sizeof obuf)flush();obuf[opos++]='\n';}flush();
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #150.734 ms27 MB + 816 KBAcceptedScore: 100

Subtask #1 Testcase #250.734 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #350.69 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #450.604 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #550.65 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #650.634 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #750.68 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #850.67 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #950.741 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #1050.594 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #1150.586 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #1250.64 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #1350.629 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #1450.661 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #1550.722 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #1650.65 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #1750.609 ms27 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #1850.546 ms27 MB + 816 KBAcceptedScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-09-25 10:39:19 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠