Page 5 of 5

Re: 118 WA: wtf

Posted: Fri Jun 10, 2011 9:18 am
by shantanu18
Please anyone can explain this 3rd case ?
2nd case:

Code: Select all

3 3 N LOST //so 3 3 coordinate is block
3rd Case:

Code: Select all

 LLFFFLFLFL
start 0 3 W
L -> 0 3 S  [change dir to left]
L -> 0 3 E 
F -> 1 3 E
F -> 2 3 E

[b]#F -> 3 3 E [this step is not valid becoz 3 3 already visited by 2nd robot] [so this step remain 2 3 E][/b]

L -> 2 3 N
F -> 2 4 N [this time it is lost becoz right boundary is x=5 y=3] 
SO result should be [b]2 3 N[/b]
How it is [b]2 3 S[/b]

Re: 118 WA: wtf

Posted: Mon Jun 13, 2011 9:14 am
by zobayer
@shantanu18, this is the correct move sequence for the 3rd case (considering the first 2)

Code: Select all

0 3 W
0 3 S
0 3 E
1 3 E
2 3 E
3 3 E
3 3 N
3 3 N
3 3 W
2 3 W
2 3 S
You mis-interpreted problem statement:
An instruction to move ``off'' the world from a grid point from which a robot has been previously lost is simply ignored by the current robot.
You can surely go with a cell with "scent" but you can not "fell off" the world from that cell.
Hope this helps.

Re: 118 WA: wtf

Posted: Mon Jun 13, 2011 11:13 am
by shantanu18
Thanks zobayer for reply. I got the point. I got AC.

Re: 118 WA: wtf

Posted: Thu Dec 13, 2012 11:15 pm
by brianfry713
Input:

Code: Select all

3 3
0 0 W
F
0 0 S
F
AC output:

Code: Select all

0 0 W LOST
0 0 S

WA(118 - Mutant Flatworld Explorers)

Posted: Fri Nov 22, 2013 10:44 pm
by shikhorroy
I got WA....help me please.

Code: Select all

#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cmath>
#include <cstring>
#include <climits>

#include <iostream>
#include<iomanip>
#include <vector>
#include <list>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <string>
#include <utility>
#include <sstream>
#include <algorithm>

using namespace std;

#define MAX 10000007
#define PI acos(-1.0)
#define int64 long long
#define pb push_back
#define sf scanf
#define pf printf
#define READ(f) freopen(f, "r", stdin)
#define mem(a,b) memset(a,b,sizeof(a))
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) (a*(b/gcd(a,b)))

int dx[]= {1,0,-1,0};
int dy[]= {0,1,0,-1}; //4 Direction: east, north, west, south
//int dx[]={1,1,0,-1,-1,-1,0,1};int dy[]={0,1,1,1,0,-1,-1,-1};//8 direction
//int dx[]={2,1,-1,-2,-2,-1,1,2};int dy[]={1,2,2,1,-1,-2,-2,-1};//Knight Direction
inline int get_index(char dir)
{
    if(dir == 'E') return 0;
    if(dir == 'N') return 1;
    if(dir == 'W') return 2;
    if(dir == 'S') return 3;
}
inline char get_dir(int index)
{
    if(index == 0) return 'E';
    if(index == 1) return 'N';
    if(index == 2) return 'W';
    if(index == 3) return 'S';
}
int main()
{
    READ("118 - Mutant Flatworld Explorers.in");
    int fx, fy;
    char dir;
    int rx, ry;
    string input;
    map<pair<int, int>, int>m;
    sf("%d %d",&fx, &fy);
    while(sf("%d %d %c\n",&rx, &ry, &dir) != EOF)
    {
        getline(cin,input);
        int l = input.length();
        int index = get_index(dir);
        bool flag = false;
        for(int i = 0; i < l; i++)
        {
            if(input[i] == 'R') index = (index + 3) % 4;
            else if(input[i] == 'L') index = (index + 5) % 4;
            else if(input[i] == 'F')
            {
                rx += dx[index];
                ry += dy[index];
                if(rx < 0 || rx > fx || ry < 0 || ry > fy)
                {
                    rx -= dx[index];
                    ry -= dy[index];
                    pair<int, int>pii;
                    pii = make_pair(rx, ry);
                    if(m.find(pii) == m.end()) m[pii] = 0;
                    else continue;
                    flag = true;
                    break;
                }
            }
        }
        dir = get_dir(index);
        pf("%d %d %c",rx, ry, dir);
        if(flag) pf(" LOST\n");
        else pf("\n");
    }
    return 0;
}

Re: WA(118 - Mutant Flatworld Explorers)

Posted: Fri Nov 22, 2013 10:47 pm
by shikhorroy
Yes, I found the problem and got AC.

Re: WA(118 - Mutant Flatworld Explorers)

Posted: Fri Mar 28, 2014 2:59 am
by sidsi
where is the problem??? :(

#include<stdio.h>
#include<string.h>
int main()
{
int x,y,c=0,m,n;char b[105],o;
char a[105][105][105];
memset(a,0,sizeof(a));
scanf("%d %d",&m,&n);
while(scanf("%d %d %c",&x,&y,&o)==3)
{getchar();c=0;
gets(b);
for(int i=0;i<strlen(b);i++)
{
if(o=='N')
{
if(b=='L')
o='W';
else if(b=='R')
o='E';
else if(b=='F'&&a[x+'0'][y+'0'][o+'0']!=1)
{
x=x;y=y+1;
if(x>=0&&x<=m&&y>=0&&y<=n)
continue;
else
{
x=x;y=y-1;c=1;
a[x+'0'][y+'0'][o+'0']=1;
break;
}
}
}
else if(o=='S')
{
if(b=='L')
o='E';
else if(b=='R')
o='W';
else if(b=='F'&&a[x+'0'][y+'0'][o+'0']!=1)
{
x=x;y=y-1;
if(x>=0&&x<=m&&y>=0&&y<=n)
continue;
else
{
x=x;y=y+1;c=1;
a[x+'0'][y+'0'][o+'0']=1;
break;
}
}
}
else if(o=='E')
{
if(b=='L')
o='N';
else if(b=='R')
o='S';
else if(b=='F'&&a[x+'0'][y+'0'][o+'0']!=1)
{
x=x+1;y=y;
if(x>=0&&x<=m&&y>=0&&y<=n)
continue;
else
{
x=x-1;y=y;c=1;
a[x+'0'][y+'0'][o+'0']=1;
break;
}
}
}
else if(o=='W')
{
if(b=='L')
o='S';
else if(b[i]=='R')
o='N';
else if(b[i]=='F'&&a[x+'0'][y+'0'][o+'0']!=1)
{
x=x-1;y=y;
if(x>=0&&x<=m&&y>=0&&y<=n)
continue;
else
{
x=x+1;y=y;c=1;
a[x+'0'][y+'0'][o+'0']=1;
break;
}
}
}
}
if(c==1)
printf("%d %d %c LOST\n",x,y,o);
else
printf("%d %d %c\n",x,y,o);
}
return 0;
}
please help...

Re: WA(118 - Mutant Flatworld Explorers)

Posted: Fri Mar 28, 2014 10:35 pm
by brianfry713

Re: 118 - Mutant Flatworld Explorers

Posted: Fri May 05, 2017 6:46 pm
by kurmi
Passed all test cases on udebug but still WA.
Please help.

Code: Select all

#include <iostream>
#include <vector>
#include <algorithm>
// #include <utility>
#include <string>
// #include <stack>
using namespace std;
vector<vector<int> > a(51,vector<int>(51));
int lasti=0,lastj=0,lastdir=0;
int y,x;
string ins;
char dirmap(int dir){
	if(dir==0)return 'N';
	if(dir==1)return 'E';
	if(dir==2)return 'S';
	return 'W';
}
int dirm(char dir){
	switch(dir){
		case 'N': return 0;
		case 'E': return 1;
		case 'S': return 2;
		default: return 3;
	}
}
int move(int i,int j,int dir,int k){
	// cout<<i<<' '<<j<<' '<<dir<<endl;
	if(i>x||j>y||i<0||j<0){
		if(a[lasti][lastj]==1)return move(lasti,lastj,dir,k);
		else return 1;
	}

	lasti=i,lastj=j;lastdir=dir;
	if(k==ins.size())return 0;
	if(ins[k]=='L')return move(i,j,(dir-1+4)%4,k+1);
	else if(ins[k]=='R')return move(i,j,(dir+1)%4,k+1);
	else {
		switch(dir){
			case 0: return move(i-1,j,dir,k+1);
			case 1: return move(i,j+1,dir,k+1);
			case 2: return move(i+1,j,dir,k+1);
			default: return move(i,j-1,dir,k+1);
		}
	}
	return 0;
}

int main(){
	ios::sync_with_stdio(0);
	cin>>y>>x;
	while(!cin.eof()){
		int c,r;
		char dir;
		cin>>c>>r>>dir;
		r=x-r;
		ws(cin);
		getline(cin,ins);
		int numdir=dirm(dir);
		int lost=move(r,c,numdir,0);
		if(lost){
			a[lasti][lastj]=1;
			cout<<lastj<<' '<<x-lasti<<' '<<dirmap(lastdir)<<" LOST"<<endl;
		}
		else cout<<lastj<<' '<<x-lasti<<' '<<dirmap(lastdir)<<endl;
	}
}