CARVANS - Editorial

solved - CodeChef: Practical coding for everyone but have a question.

Can anyone point out (line 29 - commented out) why do we get “Runtime Error” if I do a br.close (closing the BufferedReader). I thought closing the BufferedReader was a good practice.

Once I commented it out, the submission was accepted.

I wanted to know what would be the output for the following test case
8 4 6 5
Would it be 3 or 2?
I read abhinav1592’s solution and it gives the answer as 2
I think the answer should be 3 because in the problem it is clearly mentioned that cars cannot overtake as the track is not wide enough.
So the first car is travelling at max speed. The second one is also travelling at max speed since its speed is less than 8. The third one is not at max speed. The fourth one is travelling at max speed.
We just have to compare the speeds of consecutive cars right??? and not with all the cars… as cars cannot overtake… Please help me understand the problem…

2 Likes

Why am i getting a WA here ?
http://www.codechef.com/viewsolution/4375902

please figure out where i am wrong…

Sir, may i know why this is giving worng answer? thanks

#include<stdio.h>
int main(){
int t,n,count;
long long int a[10000];
scanf("%d",&t);
while(t–){
count=1;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i]<=a[i-1] &&i !=0){
count++;
}
}
printf("%d\n",count);
}
}

Even this problem can be solved without the help of any array :
in o(n-1)time
sol is:CodeChef: Practical coding for everyone

#include
using namespace std;
int main()
{
int t,n;
cin>>t;
while(t–)
{
cin>>n;
int a[n],i,count=1;
for(i=0;i<n;i++)
cin>>a[i];
for(i=1;i<n;i++)
{
if(a[i]<a[i-1])
count++;
}
cout<<count<<"\n";
}
return(0);
}

#include
using namespace std;

int main()
{
int t;
cin>>t;
while(t–){
int n;
cin>>n;
int a[n+1];
for(int i=1;i<=n;i++){
cin>>a[i];

    }
    int ans=0;
    a[0]=-1;
    for(int i=1;i<=n;i++){
        if(a[i]<a[i-1]) ans++;
    }
    cout<<ans<<endl;
}
return 0;

}

“”“This approach works too ,and is faster than other appraoches mentioned above”""
“”“AC in one go”""

test=int(raw_input())
for _ in range(test):
N=int(raw_input())
count=1
arr=list()
arr=[int(i) for i in raw_input().split()]
for i in range(len(arr)-1):
	if(arr[i+1]>arr[i]):
		arr[i+1]=arr[i]
	else:
		count+=1
print count

can some one find mistake in this code

import java.util.;
import java.lang.
;
import java.io.*;
class klf
{
public static void main(String[]args) throws Exception
{
Scanner cin=new Scanner(System.in);
Stackst;
int t=cin.nextInt();
while(t–>0)
{
st=new Stack();
int n=cin.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++)
{
a[i]=cin.nextInt();
}
int count=0;
for(int i=0;i<n;i++)
{
if(st.empty())
{
st.push(a[i]);
count++;
}
else if(a[i]<st.peek())
{
st.push(a[i]);
count++;
}
else
{
st.push(a[i]);
}
}
while(!st.empty())
st.pop();
System.out.println(count);
}
}
}

strong text
Can anybody please let me know what is wrong with my code…
strong text
#include<stdio.h>

int main(){
int rounds,cars,speed,count=0;
for(scanf("%d",&rounds);rounds;rounds–){
int min=10000;
count=0;
for(scanf("%d",&cars);cars;cars–){
scanf("%d",&speed);
if(speed<=min){
count++;
min=speed;
}
}
printf("%d\n",count);

}

return 0;

}

Does Input to this problem is in file?
Am i need to take input from files?

Just have a look : https://www.codechef.com/viewsolution/22546307,
You will not need an array!

1 Like

the obvious/funny thing is :since at anytime we are dealing with two consecutive cars only, problem can be solved without the need of an array.

why this shows time limit exceed?

http://www.codechef.com/viewsolution/1370908

Use scanf, printf instead of cin, cout.

2 Likes

By the way, why 4MB is 4,000,000,000 bytes :slight_smile:

It is mentioned in three problems CARVANS, PPERM and COALSCAM.

if W==1 you still need to input speed of the only car of this test. Otherwise you consider its speed as a number of cars for the next test. Also while(–N) as well as while(–W) is wrong. By this you miss the last test case, last car respectively. Use while(N–) and while(W–) instead.

1 Like

@anton_lunyov …you’re right, corrected those.

Got a correct one !
thanks

Did you even run the program on local machine and test? its full of errors!

printf("1\n");    // this was using front slash
while(--W)        // --W and not W-- this was causing TLE
printf("%d\n",counter); // reference was passed here!