I used the following code for the problem CARVANS(http://www.codechef.com/problems/CARVANS/).I tried all the sample cases and for big inputs tried my own cases and get correct answers but the judge gives WA please help.
#include
int main()
{
int cases,cars,count=1;
long speed,tmp=0;
scanf("%d",&cases);
for(int i=0;i<cases;i++)
{
scanf("%d",&cars);
for(int j=0;j<cars;j++)
{
scanf("%ld",&speed);
if(speed<=tmp)
{
count+=1;
}
tmp=speed;
}
printf("%d\n",count);
count=0;
}
}
You are doing just a little mistake.
update your code by some following changes and than submit.
for(int i=0;i<cases;i++)
{
scanf("%u",&cars);
int speed,i,min,count = 1;
scanf("%d",&speed);
min = speed; //minimum must be your first cars speed.
for(i=1;i<n;i++) // than compare from second car.
{
scanf("%d",&speed);
if(speed < min) {
count++;
min = speed;
}
}
printf("%d\n",count);
}
please let me know if there will be any problem.
Happy Coding
1 Like
Upendra1234 has already corrected your code .
In your code the assignment “tmp=speed” should be within the if block .
Otherwise the logic becomes wrong .
Try the following input . The expected answer is 1 , but your program answer 2 .
Test Case :
1 ( number of test cases )
3 ( number of cars )
1 5 2 ( speed of cars )
1 Like
Thanx a lot sir actually I did not understand the question quite well but your test case cleared my doubts.I used a different code and got correct answer.
Your code works fine but for the test case mentioned by vineet paliwal it gives wrong answer.
Here’s the final code I used
#include
int main()
{
int cases,cars,count=0;
long speed,tmp=2147483647;//Upper limit of signed long
scanf("%d",&cases);
for(int i=0;i<cases;i++)
{
scanf("%d",&cars);
for(int j=0;j<cars;j++)
{
scanf("%ld",&speed);
if(speed<=tmp)//Main Logic
{
count+=1;
tmp=speed;
}
}
printf("%d\n",count);
count=0;
tmp=2147483647;//count and tmp are again initialized to their starting values to wipe out any new values for correct working of next cases.
}
}