Cod sursa(job #46497)

Utilizator mihai0110Bivol Mihai mihai0110 Data 2 aprilie 2007 18:12:19
Problema Zota & Chidil Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.33 kb
#include<fstream.h>
ifstream f("zc.in");
ofstream g("zc.out");
long i,j,m,n,x,y,nrc,nr,nrp,x1[1000000],x2[1000000],y1[1000000],y2[1000000];
char c;
/*int poz1(int li,int ls)
{
long t=0,i,j,aux;
i=li;
j=ls;
while(i<j)
{
if(x1[i]>x1[j])
{
aux=x1[i];
x1[i]=x1[j];
x1[j]=aux;
t=1-t;
aux=y1[i];
y1[i]=y1[j];
y1[j]=aux;
}
if(t)
j--;
else
i++;
}
return i;
}
void quick1(int li,int ls)
	{
	long k;
	if(li<ls)
	{
		k=poz1(li,ls);
		quick1(li,k-1);
		quick1(k+1,ls);
	}
	}
int poz2(int li,int ls)
{
long t=0,i,j,aux;
i=li;
j=ls;
while(i<j)
{
if(y2[i]>y2[j])
{
aux=x2[i];
x2[i]=x2[j];
x2[j]=aux;
t=1-t;
aux=y2[i];
y2[i]=y2[j];
y2[j]=aux;
}
if(t)
j--;
else
i++;
}
return i;
}
void quick2(int li,int ls)
	{
	long k;
	if(li<ls)
	{
		k=poz2(li,ls);
		quick2(li,k-1);
		quick2(k+1,ls);
	}
	}*/
int main()
{
f>>m>>n;
for(i=1;i<=m;i++)
{
f>>x>>y;
nr++;
x1[nr]=x;
x2[nr]=x;
y1[nr]=y;
y2[nr]=y;
if(x-1>0&&x-1!=0&&y!=0)
{
nr++;
x1[nr]=x-1;
x2[nr]=x-1;
y1[nr]=y;
y2[nr]=y;
}
if(y-1>0&&y-1!=0&&x!=0)
{
nr++;
x1[nr]=x;
x2[nr]=x;
y1[nr]=y-1;
y2[nr]=y-1;
}
if(x-1>0&&x-1!=0&&y-1!=0&&y-1>0)
{
nr++;
x1[nr]=x-1;
x2[nr]=x-1;
y1[nr]=y-1;
y2[nr]=y-1;
}
if(x-2>0&&x-2!=0&&y!=0)
{
nr++;
x1[nr]=x-2;
x2[nr]=x-2;
y1[nr]=y;
y2[nr]=y;
}
if(y-2>0&&y-2!=0&&x!=0)
{
nr++;
x1[nr]=x;
x2[nr]=x;
y1[nr]=y-2;
y2[nr]=y-2;
}
nr++;
x1[nr]=x+1;
x2[nr]=x+1;
y1[nr]=y;
y2[nr]=y;
nr++;
x1[nr]=x+2;
x2[nr]=x+2;
y1[nr]=y;
y2[nr]=y;
nr++;
x1[nr]=x+1;
x2[nr]=x+1;
y1[nr]=y-1;
y2[nr]=y-1;
nr++;
x1[nr]=x;
x2[nr]=x;
y1[nr]=y+1;
y2[nr]=y+1;
nr++;
x1[nr]=x;
x2[nr]=x;
y1[nr]=y+2;
y2[nr]=y+2;
nr++;
x1[nr]=x-1;
x2[nr]=x-1;
y1[nr]=y+1;
y2[nr]=y+1;
nr++;
x1[nr]=x+1;
x2[nr]=x+1;
y1[nr]=y+1;
y2[nr]=y+1;
}
//quick1(1,nr);
//quick2(1,nr);
x=0;
y=0;
nrc=0;
for(i=1;i<=n;i++)
{
f>>c>>nrp;
if(c=='N')
for(m=1;m<=nrp;m++)
{
y++;
for(j=1;j<=nr;j++)
if(x1[j]==x&&y1[j]==y)
{
nrc++;
break;
}
}
if(c=='S')
for(m=1;m<=nrp;m++)
{
y--;
for(j=1;j<=nr;j++)
if(x1[j]==x&&y1[j]==y)
{
nrc++;
break;
}
}
if(c=='E')
for(m=1;m<=nrp;m++)
{
x++;
for(j=1;j<=nr;j++)
if(x1[j]==x&&y1[j]==y)
{
nrc++;
break;
}
}
if(c=='V')
for(m=1;m<=nrp;m++)
{
x--;
for(j=1;j<=nr;j++)
if(x1[j]==x&&y1[j]==y)
{
nrc++;
break;
}
}
}
g<<nrc<<'\n';
f.close();
g.close();
return 0;
}