QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#481116 | #21648. Runs | AFewSuns# | 10 | 671ms | 42260kb | C++14 | 3.1kb | 2024-07-16 20:31:18 | 2024-07-16 20:31:20 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
namespace my_std{
#define ll long long
#define bl bool
ll my_pow(ll a,ll b,ll mod){
ll res=1;
if(!b) return 1;
while(b){
if(b&1) res=(res*a)%mod;
a=(a*a)%mod;
b>>=1;
}
return res;
}
ll qpow(ll a,ll b){
ll res=1;
if(!b) return 1;
while(b){
if(b&1) res*=a;
a*=a;
b>>=1;
}
return res;
}
#define db double
#define pf printf
#define pc putchar
#define fr(i,x,y) for(register ll i=(x);i<=(y);i++)
#define pfr(i,x,y) for(register ll i=(x);i>=(y);i--)
#define go(u) for(ll i=head[u];i;i=e[i].nxt)
#define enter pc('\n')
#define space pc(' ')
#define fir first
#define sec second
#define MP make_pair
#define il inline
#define inf 1e18
#define random(x) rand()*rand()%(x)
#define inv(a,mod) my_pow((a),(mod-2),(mod))
il ll read(){
ll sum=0,f=1;
char ch=0;
while(!isdigit(ch)){
if(ch=='-') f=-1;
ch=getchar();
}
while(isdigit(ch)){
sum=sum*10+(ch^48);
ch=getchar();
}
return sum*f;
}
il void write(ll x){
if(x<0){
x=-x;
pc('-');
}
if(x>9) write(x/10);
pc(x%10+'0');
}
il void writeln(ll x){
write(x);
enter;
}
il void writesp(ll x){
write(x);
space;
}
}
using namespace my_std;
#define mod 998244853
#define bs 29
ll n,hsh[1000010],pw[1000010],st[100010],top=0,f[100010],cnt=0;
char s[1000010];
struct node{
ll l,r,p;
}a[2000020];
il bl operator<(const node &x,const node &y){
if(x.l!=y.l) return x.l<y.l;
return x.r<y.r;
}
il ll get_hash(ll l,ll r){
return (hsh[r]-pw[r-l+1]*hsh[l-1]%mod+mod)%mod;
}
il ll get_lcp(ll x,ll y){
ll l=1,r=min(n-x+1,n-y+1);
while(l<r){
ll mid=(l+r+1)>>1;
if(get_hash(x,x+mid-1)==get_hash(y,y+mid-1)) l=mid;
else r=mid-1;
}
if(get_hash(x,x+l-1)==get_hash(y,y+l-1)) return l;
else return l-1;
}
il ll get_lcs(ll x,ll y){
ll l=1,r=min(x,y);
while(l<r){
ll mid=(l+r+1)>>1;
if(get_hash(x-mid+1,x)==get_hash(y-mid+1,y)) l=mid;
else r=mid-1;
}
if(get_hash(x-l+1,x)==get_hash(y-l+1,y)) return l;
else return l-1;
}
int main(){
scanf("%s",s+1);
n=strlen(s+1);
fr(i,1,n) hsh[i]=(hsh[i-1]*bs+s[i]-'a'+1)%mod;
pw[0]=1;
fr(i,1,n) pw[i]=pw[i-1]*bs%mod;
st[0]=n+1;
pfr(i,n,1){
while(top){
ll tmp=get_lcp(i,st[top]);
if(tmp<(n-st[top]+1)&&s[i+tmp]<s[st[top]+tmp]) top--;
else break;
}
f[i]=st[top]-1;
st[++top]=i;
}
fr(i,1,n){
ll l=i,r=f[i];
if(l>1) l-=get_lcs(i-1,f[i]);
if(r<n) r+=get_lcp(i,f[i]+1);
if((r-l+1)>=2*(f[i]-i+1)) a[++cnt]=(node){l,r,f[i]-i+1};
}
top=0;
pfr(i,n,1){
while(top){
ll tmp=get_lcp(i,st[top]);
if(tmp<(n-st[top]+1)&&s[i+tmp]>s[st[top]+tmp]) top--;
else break;
}
f[i]=st[top]-1;
st[++top]=i;
}
fr(i,1,n){
ll l=i,r=f[i];
if(l>1) l-=get_lcs(i-1,f[i]);
if(r<n) r+=get_lcp(i,f[i]+1);
if((r-l+1)>=2*(f[i]-i+1)) a[++cnt]=(node){l,r,f[i]-i+1};
}
sort(a+1,a+cnt+1);
ll cntt=0;
fr(i,1,cnt) if(!cntt||a[cntt]<a[i]) a[++cntt]=a[i];
cnt=cntt;
writeln(cnt);
fr(i,1,cnt) pf("%lld %lld %lld\n",a[i].l,a[i].r,a[i].p);
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 121ms
memory: 14832kb
input:
luynenolgrtkiqkdbpcoqsjyisilepmrkleqytdfmxrupcartchjwqhekspohcftpmkpfnwtmoqesqxluevqwewgylwgpdbgplwwbsqpigtayqmswjksngymtwulavrpjpomiedsmxtmpheoqogfwhtpdnaflsxwhlkrrnkfmfrcmvqelyjhfdylszqftndcynurbgwnnnrbkjfxioeptfaoervxgzzhovypdvfsiytviysqpzhkeiyibwhjviqjgpblmieugxroykgnloxpyyzzugirqbcwqdicloyulqij...
output:
7444 99 100 1 164 165 1 200 202 1 222 223 1 277 278 1 279 280 1 334 335 1 406 407 1 410 411 1 412 413 1 421 422 1 434 435 1 458 459 1 494 495 1 559 560 1 564 565 1 566 567 1 577 578 1 624 625 1 633 634 1 704 705 1 706 707 1 710 711 1 749 750 1 769 770 1 797 798 1 800 801 1 858 859 1 866 867 1 868 86...
result:
wrong answer 1st lines differ - expected: '7394', found: '7444'
Test #2:
score: 0
Wrong Answer
time: 102ms
memory: 15488kb
input:
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq...
output:
50017 1 200000 1 2 200000 1 3 200000 1 4 200000 1 5 200000 1 6 200000 1 7 200000 1 8 200000 1 9 200000 1 10 200000 1 11 200000 1 12 200000 1 13 200000 1 14 200000 1 15 200000 1 16 200000 1 17 200000 1 18 200000 1 19 200000 1 20 200000 1 21 200000 1 22 200000 1 23 200000 1 24 200000 1 150008 150005 -...
result:
wrong answer 1st lines differ - expected: '1', found: '50017'
Test #3:
score: 0
Wrong Answer
time: 139ms
memory: 19156kb
input:
bbccaaababbbbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccaaaba...
output:
102736 1 2 1 1 27 11 1 70 27 1 183 70 1 479 183 1 1254 479 1 3283 1254 1 8595 3283 1 22502 8595 1 58911 22502 1 154231 58911 3 4 1 5 7 1 7 10 2 10 13 1 12 43 16 12 113 43 12 296 113 12 775 296 12 2029 775 12 5312 2029 12 13907 5312 12 36409 13907 12 95320 36409 14 15 1 16 18 1 18 21 2 21 24 1 23 32 ...
result:
wrong answer 1st lines differ - expected: '102706', found: '102736'
Test #4:
score: 0
Wrong Answer
time: 133ms
memory: 16368kb
input:
dcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcd...
output:
69121 1 28 12 1 72 28 1 188 72 1 492 188 1 1288 492 1 3372 1288 1 8828 3372 1 23112 8828 1 60508 23112 1 158412 60508 1 200000 0 4 5 1 5 12 4 12 13 1 13 44 16 13 116 44 13 304 116 13 796 304 13 2084 796 13 5456 2084 13 14284 5456 13 37396 14284 13 97904 37396 16 17 1 17 24 4 24 25 1 25 32 4 29 56 12...
result:
wrong answer 1st lines differ - expected: '69092', found: '69121'
Test #5:
score: 10
Accepted
time: 1ms
memory: 8040kb
input:
dcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcba
output:
31 1 28 12 1 72 28 4 5 1 5 12 4 12 13 1 13 44 16 13 100 44 16 17 1 17 24 4 24 25 1 25 32 4 29 56 12 32 33 1 33 40 4 40 41 1 41 88 16 44 45 1 45 52 4 52 53 1 53 60 4 60 61 1 61 68 4 68 69 1 69 76 4 73 100 12 76 77 1 77 84 4 84 85 1 88 89 1 89 96 4 96 97 1
result:
ok 32 lines
Test #6:
score: 0
Wrong Answer
time: 144ms
memory: 20164kb
input:
bbabaababaababbbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbaba...
output:
140081 1 2 1 1 34 15 1 87 34 1 227 87 1 594 227 1 1555 594 1 4071 1555 1 10658 4071 1 27903 10658 1 73051 27903 1 200000 0 2 5 2 2 14 5 3 8 3 5 6 1 6 10 2 8 13 3 10 11 1 11 14 2 14 17 1 15 53 19 15 140 53 15 367 140 15 961 367 15 2516 961 15 6587 2516 15 17245 6587 15 45148 17245 15 118199 45148 17 ...
result:
wrong answer 1st lines differ - expected: '140058', found: '140081'
Test #7:
score: 0
Wrong Answer
time: 671ms
memory: 23136kb
input:
ghbaahxvveloseywqeuokpraqgyscdcimfioohjjnwyhdyftczjorapjhncjqetfjetxnfidbgkeesajrjxkkmutayescxxndtmryuubdgijyisstqefcayeycxccwpfpdypautdbbmblfvexakzakgzpfdrdtytyzkytfdwgqarxvyuvivysbzhgcakxbfwarwvxaufsuzprxjnhenbimlqoncmojkqbgoaiifaegpvdakmhxoplzfamkodtatwghwprerxkhtqhfcofqfqrnsgxgjsgcppmlgfrxdceyuo...
output:
9154 1 1000000 0 100010 7701 -92308 100010 38453 -61556 103701 103665 -35 103702 103631 -70 103703 103588 -114 103704 103515 -188 103705 103446 -258 103706 103422 -283 103707 103412 -294 103708 103386 -321 103709 103351 -357 103710 103336 -373 103711 103313 -397 103712 103311 -400 103713 103288 -424...
result:
wrong answer 1st lines differ - expected: '38316', found: '9154'
Test #8:
score: 0
Wrong Answer
time: 614ms
memory: 42260kb
input:
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp...
output:
800005 350013 350011 -1 350014 350010 -3 350015 350009 -5 350016 350008 -7 350017 350007 -9 350018 350006 -11 350019 350005 -13 350020 350004 -15 350021 350003 -17 350022 350002 -19 350023 350001 -21 350024 350000 -23 350025 349999 -25 350026 349998 -27 350027 349997 -29 350028 349996 -31 350029 349...
result:
wrong answer 1st lines differ - expected: '1', found: '800005'
Test #9:
score: 0
Wrong Answer
time: 650ms
memory: 25956kb
input:
aababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccaaaba...
output:
102463 1 1000000 0 100010 65583 -34426 124720 124717 -2 124721 124716 -4 124722 124711 -10 124723 124704 -18 124724 124702 -21 124725 124701 -23 124726 124700 -25 124727 124695 -31 124728 124688 -39 124729 124686 -42 124730 124685 -44 124731 124684 -46 124732 124677 -54 124733 124675 -57 124734 1246...
result:
wrong answer 1st lines differ - expected: '513547', found: '102463'
Test #10:
score: 0
Wrong Answer
time: 649ms
memory: 30024kb
input:
aababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbaba...
output:
296303 1 1000000 0 100010 87238 -12771 130398 130392 -5 130399 130387 -11 130400 130385 -14 130401 130384 -16 130402 130382 -19 130403 130380 -22 130404 130379 -24 130405 130377 -27 130406 130372 -33 130407 130370 -36 130408 130369 -38 130409 130367 -41 130410 130365 -44 130411 130364 -46 130412 130...
result:
wrong answer 1st lines differ - expected: '700312', found: '296303'