can anybody tell me where iam getting WA

my solution for problem : CodeChef: Practical coding for everyone

solution : CodeChef: Practical coding for everyone

can anybody tell me where iam getting WA

my solution for problem : CodeChef: Practical coding for everyone

solution : CodeChef: Practical coding for everyone

Have you Considered the case when there are no cars on a floor between your starting and ending floors?

yes it should give 0

COnsider this case

1

5 4

N N N N

N N P N

N N N N

N N N N

N N P N

answer is 1 for this test case according to my solution.

but what shall be the actual answer I think 3.

no it should be 1 because it is given in question

If the parking lot is empty, then the time taken is considered to be 0.

Considering the whole Parking lot as a single unit then it is not empty see two cars are there on 4and 1st floor

now say you directly went into the building at floor 4 then moved down 3 levels to reach floor 1 and then exited thus answer is 3

.

code

cin>>m>>n;

for(i=1;i<=m;i++)

{

for(j=1;j<=n;j++)

{

char c;

cin>>c;

cin.clear();

if(c==‘N’)

{

a[i][j]=0;

}

else

{

a[i][j]=1;

}

}

}

ll start[500]={0},end[500]={0};

for(i=1;i<=m;i++)

{

ll vals=P,vale=0;

for(j=1;j<=n;j++)

{

if(a[i][j]==1)

{

vals=min(vals,j);

vale=max(vale,j);

}

}

start[i]=vals;

end[i]=vale;

}

ll ans=0,cs=0,ce=0;

for(i=1;i<=m;i++)

{

if(start[i]!=P)

{

cs=i;

break;

}

}

for(i=m;i>=1;i–)

{

if(start[i]!=P)

{

ce=i;

break;

}

}

if(cs==0)

{

cout<<0<<endl;

continue;

}

else if(cs==ce)

{

ans+=abs(start[cs]-end[ce]);

cout<<ans<<endl;

continue;

}

else

{

vector v;

ans+=ce-cs;

for(i=cs;i<=ce;i++)

{

if(start[i]!=P)

{

if(i%2==1)

{

v.push_back(start[i]);

v.push_back(end[i]);

}

else

{

v.push_back(end[i]);

v.push_back(start[i]);

}

}

}

for(i=1;i<v.size();i++)

{

ans+=abs(v[i]-v[i-1]);

}

cout<<ans<<endl;

}

1 Like

Empty parking lot means that there is no free spot at any level of the matrix in which case the answer is 0. So, for the above test case the answer should be 3 ( moving downward 3 steps where each step counts as one operation ).

but I got WA for the same test cases both the times.

The 'P’s are three floors apart. So he will need at least 3 units to climb down.

look at my solution it is correct for this test case as well :

#include<bits/stdc++.h>

using namespace std;

#define IOS ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);

int main()

{

IOS

int t;

cin>>t;

while(t–)

{

int m,n;

cin>>m>>n;

vector<pair<int,int>> use(m);

for(int i=0;i<m;i++)

use[i]={-1,-1};

int count=0;

int start=302;

```
char c;
for(int i=0;i<m;i++)
{
count=0;
for(int j=0;j<n;j++)
{
cin>>c;
if(c=='P') count++;
if(count==1 and c=='P')
{
if(start==302) start=i;
use[i].first=j;
use[i].second=j;
}
else if(c=='P' and count>1)
{
use[i].second=j;
}
}
}
int ans=0,j,flag;
for(int i=start;i<m;)
{
flag=0;
for(j=i+1;j<m;j++)
{
if(use[j].second!=-1)
{
flag=1;break;
}
}
if(flag)
{
ans+=j-i;
if(i%2==0)
ans+=abs(use[j].second-use[i].second);
else
ans+=abs(use[i].first - use[j].first);
}
if(use[i].second!=-1)
ans+=use[i].second-use[i].first;
i=j;
}
cout<<ans<<endl;
}
```

}