Cod sursa(job #97600)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 7 noiembrie 2007 18:38:41
Problema Zota & Chidil Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream.h>
ifstream fin("zc.in");
ofstream fout("zc.out");
  const long x[14]={0,0,0,0,0,1,1,1,-1,-1,-1,-2,2};
  const long y[14]={0,-2,-1,1,2,-1,1,0,-1,1,0,0,0};
  long long n,m,dist,a[100000],b[100000];
  char dir;
void citire(){
 fin>>n>>m;
 for (long i=0;i<n;i++)
     fin>>b[i]>>a[i];
}
long cautare(long nx,long ny){
   for (long k=0;k<n;k++)
   for (long i=0;i<13;i++)
      if ((nx==a[k]+x[i])&&(ny==b[k]+y[i]))
	 return 1;
return 0;
}
long citire2(){
long nr=0,x1=0,y1=0;
for (long i=0;i<m;i++) {
    fin>>dir>>dist;
    if (dir=='N'){
    for (long j=x1+1;j<=x1+dist;j++)
	nr+=cautare(j,y1);
    x1+=dist;
    }
    else
      if(dir=='S'){
	for (long j=x1-1;j>=x1-dist;j--)
	   nr+=cautare(j,y1);
      x1-=dist;
      }
	else
	  if (dir=='E'){
	  for (long j=y1+1;j<=y1+dist;j++)
	     nr+=cautare(x1,j);
	  y1+=dist;
	  }
	     else
	       if (dir=='V'){
		 for (long j=y1-1;j>=y1-dist;j--)
		    nr+=cautare(x1,j);
		 y1-=dist;
	       }
}
return nr;
}
int main(){
citire();
fout<<citire2();
fin.close();
fout.close();
return 0;
}