PROXYC - EDITORIAL

please help me where i am wrong :shushing_face:
#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! :slight_smile:

1 Like

here is link
https://www.codechef.com/viewsolution/36147739

1 Like

Thanks! The following test input causes an out-of-bounds access in your solution:

1
5
AAAAA
2 Likes

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
2 Likes

Thanks for replying ,i understood where i did mistake.

1 Like

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 :frowning: .

1 Like

Please link to your updated code.

https://www.codechef.com/viewsolution/46656054

It looks like you applied the fix, but then broke it by additionally switching to using a std::string and using it wrongly :slight_smile:

                cin>>S[i];

S is empty, so attempting to reference S[i] is undefined behaviour.

Again thank you so much ! :smile:
I just started solving practice questions, any tips or suggestion from you would be great.

1 Like
  • 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.

See my solution if you don’t want to use array.
https://www.codechef.com/viewsolution/68435570