please help me where i am wrong
#include <bits/stdc++.h>
using namespace std;
using ll=long long int;
int main() {
// your code goes here
int t;
cin>>t;
while(t–)
{
int n,i,p=0,prox=0,np=0;
string s;
double per;
cin>>n;
cin>>s;
if(n==1)
{
if(s[0]==‘A’)
cout<<1<<endl;
else
cout<<0<<endl;
}
else if(n==2)
{
if((s[0]==‘A’) && (s[1]==‘A’))
cout<<2<<endl;
else if(((s[0]==‘A’) && (s[1]==‘P’))|| ((s[0]==‘P’) && (s[1]==‘A’)))
cout<<1<<endl;
else
cout<<0<<endl;
}
else
{
for(i=0;i<n;i++)
{
if(s[i]==‘P’)
p++;
}
per=(double)p/n;
if(per>=0.75)
cout<<0<<endl;
else
{
for(i=0;i<n;i++)
{
if(i==0)
{
if((s[i]==‘A’) && ((s[i+1]==‘P’) || (s[i+1]==‘P’)))
{
p++;
np++;
s[i]=‘P’;
}
}
else if(i==1)
{
if((s[i]==‘A’) && ((s[i+1]==‘P’) || (s[i+2]==‘P’) ||(s[i-1]==‘P’)))
{
p++;
np++;
s[i]=‘P’;
}
}
else
{
if((s[i]==‘A’) && ((s[i+1]==‘P’) || (s[i+2]==‘P’) ||(s[i-1]==‘P’) || (s[i-2]==‘P’)))
{
p++;
np++;
s[i]=‘P’;
}
}
per=(double)p/n;
if(per>=0.75)
break;
}
//cout<<“per=”<<per<<“np=”<<np<<endl;
if(per>=0.75)
cout<<np<<endl;
else
cout<<-1<<endl;
}
}
}
return 0;
}
Please either format your code or (better!) link to your submission - the forum software has mangled it and it won’t compile!
Thanks! The following test input causes an out-of-bounds access in your solution:
1
5
AAAAA
It gives -1 as output
That is correct output,i think.
For this input i get -1 as output that is correct
https://www.codechef.com/viewsolution/37764805
Please help me out with the code.Dummy testcases have passed.If anybody can find me some test cases which are outputting wrong from my code.
Thanks in advance.
Consider the test input:
1
4
PAAP
Thanks for replying ,i understood where i did mistake.
https://www.codechef.com/viewsolution/39844684
can anyone help me with this? where am i getting this wrong .
https://www.codechef.com/viewsolution/46630201
I have tried multiple test-cases with all correct answers. I don’t know where I am getting wrong. It will be very helpful, if someone help me in finding the bug.
Consider the test input:
1
7
APAPAPP
Thank you for the correction!
But, I am still getting a SIGSEGV error (Runtime error). I tried to check for any divide by 0 error , but there is no such division. Also, memory usage is not too much. I don’t know why still I am getting such error .
Please link to your updated code.
It looks like you applied the fix, but then broke it by additionally switching to using a std::string
and using it wrongly
cin>>S[i];
S
is empty, so attempting to reference S[i]
is undefined behaviour.
Again thank you so much !
I just started solving practice questions, any tips or suggestion from you would be great.
- Set up
gcc
on your local machine - Use debugging flags until you are ready to submit - I generally use
-D_GLIBCXX_DEBUG -fsanitize=undefined -ftrapv
, which would have pointed out your Runtime Error immediately - only use Codechef’s compiler when you are ready to submit, which you shouldn’t do until (at least) the sample testcase passes with the debugging flags enabled.