Pagini recente » Cod sursa (job #1213871) | Istoria paginii utilizator/madapetru | Cod sursa (job #1623679) | Cod sursa (job #357842) | Cod sursa (job #386041)
Cod sursa(job #386041)
#include <stdio.h>
int main()
{
FILE* fin = fopen("poligon.in", "r");
FILE* fout = fopen("poligon.out", "w");
int N, M;
fscanf(fin, "%d %d", &N, &M);
int POL[801][2];
int INF[60001][2];
for (int i = 0; i < N; i++)
{
fscanf(fin, "%d %d", &POL[i][0], &POL[i][1]);
}
POL[N][0] = POL[0][0];
POL[N][1] = POL[0][1];
for (int i = 0; i < M; i++)
{
fscanf(fin, "%d %d", &INF[i][0], &INF[i][1]);
}
int valid = 0;
for (int i = 0; i < M; i++)
{
int ct = 0;
for (int j = 0; j < N; j++)
{
if (POL[j][0] > INF[i][0] && POL[j+1][0] > INF[i][0])
{
if ((POL[j][1] > INF[i][1] && POL[j+1][1] < INF[i][1]) || (POL[j][1] < INF[i][1] && POL[j+1][1] > INF[i][1]))
{
ct++;
}
}
else
{
if ((POL[j][0] > INF[i][0] && POL[j+1][0] < INF[i][0]) || (POL[j][0] < INF[i][0] && POL[j+1][0] > INF[i][0]))
{
if ((POL[j][1] > INF[i][1] && POL[j+1][1] < INF[i][1]) || (POL[j][1] < INF[i][1] && POL[j+1][1] > INF[i][1]))
{
ct++;
}
}
}
}
if (ct % 2 == 0)
{
valid++;
}
}
fprintf(fout, "%d", valid);
fclose(fin);
fclose(fout);
return 0;
}