Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Why RE????;;

Posted by kcm1700 at 2006-08-09 22:28:31 on Problem 2935
my code...
Why RE???????
#include <stdio.h>
int sr,sc,er,ec;
int v[7][7];
int w[4][4];
int dir[4][2]={0,1,0,-1,1,0,-1,0};
int pth[7][7];
char answ[1000];
char cdir[5]="WENS";
inline int ccw(int x1,int y1,int x2,int y2,int x3,int y3){
	return (((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1))<0);
}
inline int cross(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4){
	x1<<=1;
	x2<<=1;
	y1<<=1;
	y2<<=1;
	x3<<=1;
	x3|=1;
	x4<<=1;
	x4|=1;
	y3<<=1;
	y3|=1;
	y4<<=1;
	y4|=1;
	if(ccw(x1,y1,x2,y2,x3,y3)^ccw(x1,y1,x2,y2,x4,y4)){
		if(ccw(x3,y3,x4,y4,x1,y1)^ccw(x3,y3,x4,y4,x2,y2)){
			return 1;
		}
	}
	return 0;
}
int main(){
	int i,j,k,l,tj,tk;
	while(1){
		scanf("%d%d",&sc,&sr);
		if(!sc && !sr)break;
		scanf("%d%d",&ec,&er);
		sc--,sr--,ec--,er--;
		for(i=0;i<6;i++){
			for(j=0;j<6;j++){
				v[i][j] = 0;
			}
		}
		for(i=0;i<3;i++){
			scanf("%d%d%d%d",&w[i][1],&w[i][0],&w[i][3],&w[i][2]);
		}
		v[sr][sc]=1;
		for(i=0;i<6*6;i++){
			for(j=0;j<6;j++){
				for(k=0;k<6;k++){
					if(v[j][k]){
						for(l=0;l<4;l++){
							if(dir[l][0]+j>=0&&dir[l][0]+j<6){
								if(dir[l][1]+k>=0&&dir[l][1]+k<6){
									if(cross(w[0][0],w[0][1],w[0][2],w[0][3],j,k,dir[l][0]+j,dir[l][1]+k))continue;
									if(cross(w[1][0],w[1][1],w[1][2],w[1][3],j,k,dir[l][0]+j,dir[l][1]+k))continue;
									if(cross(w[2][0],w[2][1],w[2][2],w[2][3],j,k,dir[l][0]+j,dir[l][1]+k))continue;
									if(v[dir[l][0]+j][dir[l][1]+k] == 0 || v[dir[l][0]+j][dir[l][1]+k] > v[j][k]+1){
										v[dir[l][0]+j][dir[l][1]+k] = v[j][k]+1;
										pth[dir[l][0]+j][dir[l][1]+k] = l^1;
									}
								}
							}
						}
					}
				}
			}
		}
		answ[v[er][ec]-1]=0;
		i=v[er][ec]-2;
		j=er;
		k=ec;
		while(er!=sr || ec!=sc){
			tj=j+dir[pth[j][k]][0];
			tk=k+dir[pth[j][k]][1];
			answ[i] = cdir[pth[j][k]];
			j=tj;
			k=tk;
			i--;
		}
		printf("%s\n",answ);
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator