Pagini recente » Cod sursa (job #3141228) | Cod sursa (job #1308902) | Cod sursa (job #3000108) | Cod sursa (job #2781304) | Cod sursa (job #265198)
Cod sursa(job #265198)
#include <stdio.h>
typedef struct {
int x, y;
} Pair;
int N;
Pair Ps[800];
int is_included(Pair p) {
int i, j, c = 0;
for (i = 0, j = N-1; i < N; j = i++) {
if ((Ps[i].y > p.y) == (Ps[j].y > p.y))
continue;
if (p.x > (Ps[j].x - Ps[i].x) * (p.y - Ps[i].y) / (Ps[j].y - Ps[i].y) + Ps[i].x)
continue;
//printf("\tintersects (%d, %d) - (%d, %d)\n", Ps[i].x, Ps[i].y, Ps[j].x, Ps[j].y);
c = !c;
}
return c;
}
int main(int argc, char *argv[]) {
int M, i, t = 0;
Pair I;
FILE *fi = fopen("poligon.in", "r");
fscanf(fi, "%d %d", &N, &M);
for (i = 0; i < N; ++i)
fscanf(fi, "%d %d", &Ps[i].x, &Ps[i].y);
while (M--) {
fscanf(fi, "%d %d", &I.x, &I.y);
//printf("(%d, %d) is\n", I.x, I.y);
if (is_included(I)) {
// printf("IN\n");
++t;
} else {
// printf("OUT\n");
}
}
fclose(fi);
FILE *fo = fopen("poligon.out", "w");
fprintf(fo, "%d\n", t);
fclose(fo);
return 0;
}