Can someone help me in fiding error in my code ?? It is failing on a test case but I am not able to figure it out . Problem Link : https://codeforces.net/contest/1562/problem/C
My logic :
Case 1 — string contains all 1s then simply print starting and ending indexes of any two substrings of length greater than n/2. as they will be multiple of each other . like 11111111 >>> 1111 1111 heir decimal values both will be multiple of each other .
Case 2 — if the first zero is finding at length less than or = to n/2 then print the index of a substring starting from there till the end and other excluding that zero and till the end. Like 101111 >>> 01111 and 1111, their decimal values both will be multiple of each other .
Case 3 — if the first zero is at length greater than n/2 then print the index of a substring starting from index 1 till it and the other starting from 1 to l-1. ****
I think it is failing on Case 1 But not able to figure it out why and where Please Help!!!!!
void solve()
{
ll n;cin>>n;string s;cin>>s;
ll l=-1;
for(int i=0;i<n;i++)
{
if(s[i]=='0')
{
l = i+1;
break;
}
}
if(l==-1)
{
cout<<1<<" "<<n/2<<" "<<n/2+1<<" "<<n<<"\n";return ;
}
if(l<=n/2)
{
cout<<l<<" "<<n<<" "<<l+1<<" "<<n<<"\n"; return ;
}
else
{
cout<<1<<" "<<l<<" "<<1<<" "<<l-1<<"\n";return ;
}
}