QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#277880#2592. 甲苯先生和大中锋的字符串SoyTony100 ✓92ms27868kbC++142.5kb2023-12-07 06:52:182023-12-07 06:52:18

Judging History

This is the latest submission verdict.

  • [2023-12-07 06:52:18]
  • Judged
  • Verdict: 100
  • Time: 92ms
  • Memory: 27868kb
  • [2023-12-07 06:52:18]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;

const int maxn=1e5+10;

inline int read(){
    int x=0,w=1;char c=getchar();
    while(c<'0'||c>'9'){if(c=='-')w=-1;c=getchar();}
    while(c<='9'&&c>='0'){x=(x<<3)+(x<<1)+c-'0';c=getchar();}
    return x*w;
}

int t;
int n,k;
char s[maxn];
int siz[maxn];
struct edge{
    int to,nxt;
}e[maxn<<1];
int head[maxn<<1],cnt;
inline void add_edge(int u,int v){
    e[++cnt].to=v,e[cnt].nxt=head[u],head[u]=cnt;
}
struct SuffixAutomaton{
    int tot,last;
    int ch[maxn<<1][26];
    int len[maxn<<1],link[maxn<<1],cnt[maxn<<1];
    inline void init(){
        for(int i=0;i<=tot;++i){
            head[i]=0;
            for(int c=0;c<26;++c) ch[i][c]=0;
        }
        tot=0,last=0;
        link[0]=-1;
    }
    inline void extend(char c){
        int cur=++tot;
        len[cur]=len[last]+1,cnt[cur]=1;
        int p=last;
        while(p!=-1&&!ch[p][c]){
            ch[p][c]=cur;
            p=link[p];
        }
        if(p==-1) link[cur]=0;
        else{
            int q=ch[p][c];
            if(len[p]+1==len[q]) link[cur]=q;
            else{
                int clone=++tot;
                len[clone]=len[p]+1,link[clone]=link[q],cnt[clone]=0;
                for(int i=0;i<26;++i) ch[clone][i]=ch[q][i];
                while(p!=-1&&ch[p][c]==q){
                    ch[p][c]=clone;
                    p=link[p];
                }
                link[cur]=link[q]=clone;
            }
        }
        last=cur;
    }
    inline void build(){
        for(int i=1;i<=tot;++i){
            add_edge(link[i],i);
        }
    }
    void dfs(int u){
        for(int i=head[u],v;i;i=e[i].nxt){
            v=e[i].to;
            dfs(v);
            cnt[u]+=cnt[v];
        }
    }
    inline void solve(){
        build();
        dfs(0);
        for(int i=1;i<=tot;++i){
            if(cnt[i]==k){
                ++siz[len[link[i]]+1],--siz[len[i]+1];
            }
        }
        for(int i=1;i<=n;++i) siz[i]+=siz[i-1];
        int mx=0,ans=-1;
        for(int i=n;i>=1;--i){
            if(siz[i]>mx) mx=siz[i],ans=i;
        }
        printf("%d\n",ans);
    }
}SAM;

int main(){
    scanf("%d",&t);
    for(int T=1;T<=t;++T){
        scanf("%s",s+1);
        n=strlen(s+1);
        scanf("%d",&k);
        cnt=0;
        SAM.init();
        for(int i=1;i<=n;++i) siz[i]=0;
        for(int i=1;i<=n;++i) SAM.extend(s[i]-'a');
        SAM.solve();
        // if(t==21&&T>3) break;
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 5
Accepted
time: 0ms
memory: 8020kb

input:

10
zdlzzlzllz 4
zyyykkyyyy 3
gssgsslsds 4
lyoyyyyhhh 4
cjjcjjjcjc 2
fiigfirfrf 4
dudzudzzud 3
vmgvxvvvmg 4
cceeeceeec 2
uupuppuuup 2

output:

1
3
-1
-1
3
1
1
-1
3
3

result:

ok 10 lines

Test #2:

score: 5
Accepted
time: 1ms
memory: 8016kb

input:

10
kykkykkkky 3
mpamzzmpap 4
gwlnlglnll 4
tvgvttggvv 3
mmgmgzazaa 4
lpllpppmlm 3
yyieyyieee 3
rkkkrkkkrr 2
ooovoovvoo 2
eoedoeeded 3

output:

2
-1
-1
1
-1
-1
-1
3
3
2

result:

ok 10 lines

Test #3:

score: 5
Accepted
time: 0ms
memory: 8008kb

input:

10
zvzzzdvvvv 3
momommmomm 2
ppppmpmppp 3
vdlvllvddv 3
xjujxjxuxx 3
vsejjjveev 4
rrrvrereve 3
hhfhyhyfhy 4
yyvvvvybbb 3
igttggttgi 3

output:

2
4
3
1
1
-1
1
-1
1
-1

result:

ok 10 lines

Test #4:

score: 5
Accepted
time: 1ms
memory: 10068kb

input:

10
vvuuvuevue 3
kaaakktkka 3
bbbbbbbbbb 3
vnvvvnvvvv 2
ddfdfdfddd 2
vvzzvczcvc 3
bteettvtev 4
faffaaffaf 3
xekktxxktk 4
sssesekksk 4

output:

2
-1
8
4
4
1
1
2
1
-1

result:

ok 10 lines

Test #5:

score: 5
Accepted
time: 20ms
memory: 25364kb

input:

21
cbaabbacbabbaaacbbcabbabcabbcbabacacabbccaaaaaaccccbbacabbccabababbbccbcabcbacbccababacbabaaabcaaaccbbbcacbabcbbacccbcabcaccbbacaacccabcacacbcbcbbccbababacacaaaacccaaababbcaccbabcccacababbabccbbcbccaaababbaacaaccacbcccbabbccccbacaabbbcacaacaccccaccabaccacaccaacabaaabcbbccccbbbbbbabccbbacabacabbac...

output:

-1
93
6997
6997
6997
6997
6997
6997
6997
6997
6997
6997
6997
6997
6997
6997
6997
6997
6997
6997
6997

result:

ok 21 lines

Test #6:

score: 5
Accepted
time: 59ms
memory: 25156kb

input:

44
kdgoajrkqmaiiagpgqfplfbgifcbinfaqkmrrlhpghdmfkhmgmhrpgdglghablaqbnpqeclkjodmekgkdlkqpnehrkhrbhpaakqfmjnbdqlijqakjiihcnobdbqcincjdaonhjmkggqnepfldnqfgkfhldjcpljqjdmokefqkdjmqogciehmpkcgolildpjkqbhjgkfonpjkjnmrprmkkmrgdfpgbeprgcgkmkgfhnpoghochgkpahbdloimadjefoopgbanmqjrddbihjfhrgjkapcbajfdfaalraelo...

output:

58
106
97
2500
-1
95
48
9261
-1
84
-1
58
20
3915
103
26
92
10843
95
2
81
-1
2944
83
-1
96
-1
-1
-1
-1
-1
-1
7
3
2
3
1
5
5
2
6
7
3
3

result:

ok 44 lines

Test #7:

score: 5
Accepted
time: 63ms
memory: 24232kb

input:

33
kcufklrpmdqeiomibkrxvmsjbmspkuduwxsjklqogbsppwxqjihgvspogjvqganuphfrkohrprigqxpbiohvipdhqbxwbeljdqcogkxndxmtwtuwjulklprdqisjnfsinvwmxnrcmfolacbconmrevnuvhvceqljfbnephwdmegnhihvvlhbiunvdkaxslapmoltnkxrgvwffftsqclqwaordoinrifvoqrdsivbflgdrrnjtbcrrikuwschthebxvvkvkdtvbwotlaoesawcckavmxitdjlrgnoqqbor...

output:

41
81
-1
13523
91
42
11676
110
-1
-1
1245
110
-1
22444
-1
104
65
90
-1
35
-1
49
101
103
-1
93
2
106
2
93
1
5
2

result:

ok 33 lines

Test #8:

score: 5
Accepted
time: 68ms
memory: 25172kb

input:

36
ceaeddccecadcdaaddeaedeababcacccbcebcdddaebdedacbacddcdceeeedbecaadcdecaaedeebddbcbbbbdbcacabdecadbdceeeaedeadedaaacdaaaacbcdabdaeeedadaedccdbaeecdcdddacbeadabbcacaabdbbadcdbbeaecdecbbdaedbaedacacaaddceabcdaceeddbecbebccbdcdcaacaaddeabdbdbadbebcbadecbaaaadaacdacbcdececabcbceaaeeedcbdcbdabbdedbdda...

output:

-1
-1
56
105
83
2077
1332
33
1086
7388
104
2382
43
-1
109
-1
68
109
97
-1
-1
-1
83
-1
97
-1
3
103
2
9
4
2
3
93
86
3

result:

ok 36 lines

Test #9:

score: 5
Accepted
time: 68ms
memory: 27344kb

input:

57
ecfjgcfafegamjneajgnbilmidknlgfngjgmlmkacdabkldihhigcfekibhefldlgkhdgebihnhbkkjbediehmmnlddcafngnfhfjilahfbcnkdbmldfinefdgidjfiiknnfiifnlgbjbdknamcileamkgaflinihknnfdlchmlgbgfachglmgkgmkkiehcjenhhaehiadaaheajjegflamhkgbmnbibnngndafbbebiinbdefhngdeajenifficeachmfinjifdhefjimimnnmiblagcihghjlfmedim...

output:

100
102
105
100
-1
-1
-1
72
2490
14650
86
103
892
106
20
7704
-1
9212
33
95
94
92
-1
95
-1
107
2
-1
-1
-1
-1
-1
-1
-1
-1
2
2
5
8
1
3
5
4
1
2
2
4
3
3
5
2
1
3
4
7
2
1

result:

ok 57 lines

Test #10:

score: 5
Accepted
time: 92ms
memory: 24232kb

input:

31
bdbacacddabdbabaaccbcbbcbbddbaccdddbabadbbccbddcbbdacacdbbccbabaaababbddcbbdaabbcabaadabacabdbbdbcdcdcbbddbddcabdccdbcbcabddcbcddbbdddaccbbbacddabcbddddaddcabbdddcccdbaacbaaadabccabbacadaaacadbccdbddcbaccbcccaadbcddccadccdcdbacddbbabdccbbbbbadddccbcbdaabdbbbaacbbabdccadacddbcbddaadaaaaccbccaadabd...

output:

-1
62
86
94
-1
1005
1401
103
98
4074
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1

result:

ok 31 lines

Test #11:

score: 5
Accepted
time: 67ms
memory: 25788kb

input:

70
fbecabecdeeaffffceecabccdbcddebbffdfaffccecfbfcedbeccaeefebacdbcacffcfbcbbbcaeecfcefaaddedcaedcceabefcaabfacbdeefaeeaffeafecdffffadcbbaceecabaefaabaaaceabbbeaebabdfabaefcebbbebbfafdcedbdcddeebdfbdafcebedcfbcfaaedcafcdffaeeabbbdaedefbfcfececcadebceeaefcafbbecfcfbffafeebaedacabceacadceacecedcefbbdf...

output:

-1
-1
14
90
5452
85
200
99
23
-1
51
-1
20
82
47862
14149
84
-1
61
1
-1
-1
-1
65
-1
83
-1
100
-1
-1
-1
-1
-1
108
-1
105
85
-1
3
1
3
3
4
2
2
4
2
2
4
1
4
4
4
3
3
5
3
2
1
6
6
3
3
4
2
7
8
2
1
2

result:

ok 70 lines

Test #12:

score: 5
Accepted
time: 53ms
memory: 24460kb

input:

23
abbaabacdbaabadadcaacadbaabcaababcabdadcbacdacddaddddcaacbccbdccbcdacddadbdddcdabcdbbdbdadcccaaddadbdcbcaabdcadadcbabcdcbbadcacbabcdaabaaddddddcbacdccbddbcbbaccbbbbbdbbcbabadabdcababaaccbacacabdbccddaaacadcbdacabdbbcdccccacdddbccbccbacacaddcaabbbdadbccbabbaddcabbbcdbadbdbbddcaccaabcbbdcbcbacdbdba...

output:

-1
-1
106
-1
5710
20
92
107
86
105
87
493
2078
18923
88
2204
103
82
94
89
102
88
91

result:

ok 23 lines

Test #13:

score: 5
Accepted
time: 59ms
memory: 27868kb

input:

23
kmhmojkibddnmikcbdqqlcanfedhpnjhfqcrfkifnjairjirkgndglrjqaonnfbabdafngigpgmnpcmggfjkqgcoeokrajqbmoefcmjprekoecclhkdgodabamhmojkibddnojkibddnmikjkibddnmikckmhmojkibddhmojkibddnmibddnmikcbdddnmikcbdqqbddnmikcbdqkibddnmikcbmojkibddnmidnmikcbdqqlojkibddnmikbddnmikcbdqibddnmikcbdmhmojkibddnjkibddnmikc...

output:

13
-1
84
109
-1
10360
-1
95
106
17
87
104
639
85
5030
32291
86
169
84
82
88
107
85

result:

ok 23 lines

Test #14:

score: 5
Accepted
time: 54ms
memory: 25516kb

input:

28
abaaaabbbabaaaaaaaaabbabbabbbabbbbbbaabbbabbabaabababbaabbaaabbbbbbbbaaaabaaaabaaaabbaaaaabababababbabbaabbbbabbabbbabbabaaabbbaaabaabbaaabaaabaaababaaabababaabaaaabbbbbabbbbbbbabbabbbbabaaaabaabbbaaababababaaababbaabbaababbaaabbbbabaaaabaabababbaaaaaabbbbaabbbababbabaaababbbabaabaaaaaaaabbbbabab...

output:

-1
89
-1
-1
-1
85
82
-1
-1
97
96
237
9138
-1
1436
803
2
21279
64
99
84
83
83
86
53
96
106
73

result:

ok 28 lines

Test #15:

score: 5
Accepted
time: 57ms
memory: 26036kb

input:

68
abacacabcddddbbbacaabdcabbddbcdbdaddcdaacdacabdadaaadcaadddbbccbccaabbbaabcbcbbbbcbaabaabdbccddababdbcdbdbcbcacacdacabcbadacdddadadacccbdaccaaccdcbdddbadbccabcabcadacaadccdcacbcdbccccbdaddccddaadacdabccbacdcbcddabbcabbdddddddcabbadddaabdccbbbbccdcabbdaacadaabcaabdabbdddaabbcdbadccdccbccccdaddbcdd...

output:

-1
20
10343
70
92
81
-1
101
100
47
60
4071
109
-1
1117
5856
29
-1
103
34
87
-1
-1
105
93
81
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
5
3
3
5
2
12
2
1
2
7
2
2
2
2
10
8
1
7
6
3
3
4
4
2
3
2
5
2
6
2
2

result:

ok 68 lines

Test #16:

score: 5
Accepted
time: 68ms
memory: 27568kb

input:

27
cbfabfafefeeebeefebfdcbeadeebdcdeccffaceaeaeffcddbceecccdbafedaadadcbfefdfdbedcbcceaeadcbbfdcddfeaafdecbbfafacfcedbbbcbddeaebcbfcbceeeffbddbdacfddecffdadcedeaaefdcdffbfceedeadfbbbefffcbbddfebffcaebbbcfefbeaaecacfdfbcbdfabafaaeccfecdcbeeadacddbacacddfccdfcedfadbaabbefbfebcbaabfadaffddeffacddddbccd...

output:

-1
109
15458
55
-1
-1
-1
14874
3
485
86
-1
-1
6898
16784
88
14
99
65
81
102
102
82
97
87
86
90

result:

ok 27 lines

Test #17:

score: 5
Accepted
time: 59ms
memory: 27540kb

input:

32
izfwqpzzndvibmphtpzlwexzqomnrdrbcyztnaucfrlheaozppknvhmmxzzoesrjqqedrygwrtdvtuuklgyhpktmlucsptbfkhldhtzymfuhbqrmxrtmeobpjdjyxmfjtqmallzzsvitlaiktbzxqapbdyzclelgxxhkjimdduzquhbqkancccdfdeioltukrduclghqbgjxnmnaodcqfgxikfyxbvhuycymkfelonldzadndgflodtakuylpfhphfbsngfbvsevtkkyqsjevfefbctqiahrijlxrtamn...

output:

82
-1
3218
-1
-1
-1
40
781
-1
-1
-1
95
94
4103
91
11357
14
93
-1
102
90
40
61
83
106
3
94
83
19
5
3
4

result:

ok 32 lines

Test #18:

score: 5
Accepted
time: 63ms
memory: 25920kb

input:

68
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq...

output:

6173
776
102
102
99
-1
-1
17066
86
-1
45
-1
10364
-1
157
-1
-1
87
83
-1
68
-1
-1
-1
-1
-1
-1
-1
96
-1
53
96
58
91
-1
96
106
2
3
4
2
3
2
2
4
2
2
5
2
7
2
4
3
1
3
2
2
5
3
7
3
4
4
3
5
7
2
2

result:

ok 68 lines

Test #19:

score: 5
Accepted
time: 57ms
memory: 25252kb

input:

43
xosrglbjgzftubzudkqkfpcscxuwvvjujclrpnavohqijpeobuzgmdbobvlyswsbafvssxnhferqvwexsffejgvkegkyecafhxxcumlzserocwnvdsbmbwyfekdjmfqwcnazblyupsksoxptpsgqrgxxrdifkydpndopqoligvcwstqjlycegbczgkfrjiiyownemaotvqrpjhbxhddogfnnsugdfobtkrzwrorngjessfpcksqrafgsamxhayamrbkjrcyyncqhkhjwbbndhvxjhuqhvsvmtgvlkvlxa...

output:

91
45
2974
86
22
89
-1
91
46
106
106
679
-1
5304
197
12730
98
-1
-1
104
-1
92
97
102
-1
-1
103
-1
-1
-1
1
3
1
2
2
2
2
7
2
2
1
6
7

result:

ok 43 lines

Test #20:

score: 5
Accepted
time: 60ms
memory: 24768kb

input:

26
cbgijncoipdkmedpnfeplfhbpgkelbenckflhhkagnkdbncochonmfolljpgkddnojifacfhppkanmppdnnacllnelepohmmaecbhhighcheogdcdacfmncaigpholdoafphnhnejeiiklknmmcijficlijjdmidchkppidimlahgkecghkamdchllbohjcjamipelibgiindmpjdkjpnlhigigobihbfabjljkcbcpepoocihcfdjnjbehcmpdbpelknfmpildhkbjcjlimefffjnhgmlhlpcfnicman...

output:

101
55
-1
45704
92
-1
71
-1
-1
-1
98
74
3161
-1
96
106
1121
101
100
3515
494
102
107
81
93
102

result:

ok 26 lines