General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
246433155 Practice:
bkifhr9
1051E - 25 C++20 (GCC 11-64) Accepted 62 ms 82588 KB 2024-02-15 07:52:07 2024-02-15 07:52:07
→ Source
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define A(a,b) (a=(a+b)%M)
string a,l,r;
const int N=3e6;
#define M 998244353
int n,b[N],c[N],s[N],l1,l2;
void Z(string&x,int n,int*t){
    for(int i=1,l=1,r=0;i<n;i++){
        if(i<=r)t[i]=min(t[i-l],r-i+1);
        while(i+t[i]<n&&x[t[i]]==x[i+t[i]])
            t[i]++;
        if(r<i+t[i])l=i,r=i+t[i]-1;}}
signed main() {
    cin.tie(0)->sync_with_stdio(0);
    cin>>a>>l>>r;
    n=size(a),l1=size(l),l2=size(r);
    l+='*'+a,r+='*'+a;s[0]=1,s[1]=-1;
    Z(l,n+l1+1,b),Z(r,n+l2+1,c);
    for(int i=0;i<n;i++){
        int L=l1+(b[l1+i+1]<l1&&a[i+b[l1+i+1]]<l[b[l1+i+1]]);
        int R=l2-(c[l2+i+1]<l2&&a[i+c[l2+i+1]]>r[c[l2+i+1]]);
        if(a[i]=='0')R=1;
        if(L<=R)A(s[L+i],s[i]),A(s[R+i+1],M-s[i]);
        A(s[i+1],s[i]);
    }
    cout<<s[n]<<'\n';
}
			    		   					  	  	 		  		
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details