Pagini recente » Cod sursa (job #2240890) | Cod sursa (job #1631231) | Cod sursa (job #2583540) | Cod sursa (job #2029935) | Cod sursa (job #1140560)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
#define TX pair<int,int>
#define x first
#define y second
ifstream is ("zc.in");
ofstream os ("zc.out");
const int Di[] = {1, 1, 0, -1, -1, -1, 0, 1}, Dj[] = {0, 1, 1, 1, 0, -1, -1, -1};
int n, m, steps, cnt;
char D;
TX X;
vector <TX> V;
void Read();
void Solve();
int GetDir(char x);
int main()
{
Read();
sort(V.begin(), V.end());
for (int k = 1; k <= m; ++k)
Solve();
os << cnt;
is.close();
os.close();
return 0;
}
void Solve()
{
is >> D >> steps;
int Dir = GetDir(D);
for (int k = 0; k < steps; ++k)
{
X.x += Dj[Dir];
X.y += Di[Dir];
if (binary_search(V.begin(), V.end(), X) == true)
cnt++;
}
};
void Read()
{
is >> n >> m;
int i, j, iv, jv;
for (int k = 1; k <= n; ++k)
{
is >> i >> j;
for (int d = 0; d < 8; ++d)
{
iv = i + Di[d];
jv = j + Dj[d];
V.push_back(make_pair(iv, jv));
}
V.push_back(make_pair(i+2, j));
V.push_back(make_pair(i, j+2));
V.push_back(make_pair(i-2, j));
V.push_back(make_pair(i, j-2));
V.push_back(make_pair(i, j));
}
};
int GetDir(char x)
{
if (x == 'N') return 0;
if (x == 'E') return 2;
if (x == 'S') return 4;
if (x == 'V') return 6;
return 0;
};