| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
老是超时。。。帮忙看看?#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
int main()
{
int x1, y1, x2, y2, x3, y3;
int cnt = 0;
int dot = 0;
int BA[3];
int BC[3];
int BCXBA[3];
int xMinMax[2];
int yMinMax[2];
int i, j;
while (1) {
scanf("%d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3);
if (x1||y1||x2||y2||x3||y3) {
BA[0] = x1-x2;
BC[0] = x3-x2;
BA[1] = y1-y2;
BC[1] = y3-y2;
BA[2] = BC[2] = 0;
BCXBA[0] = BC[1]*BA[2] - BC[2]*BA[1];
BCXBA[1] = BC[2]*BA[0] - BC[0]*BA[2];
BCXBA[2] = BC[0]*BA[1] - BC[1]*BA[0];
xMinMax[0] = min(min(abs(x3 - x2), abs(x3 - x1)), abs(x2 - x1));
xMinMax[1] = max(max(abs(x3 - x2), abs(x3 - x1)), abs(x2 - x1));
yMinMax[0] = min(min(abs(y3 - y2), abs(y3 - y1)), abs(y2 - y1));
yMinMax[1] = max(max(abs(y3 - y2), abs(y3 - y1)), abs(y2 - y1));
for (i = xMinMax[0]+1; i < xMinMax[1]; i++)
for (j = yMinMax[0]+1; j < yMinMax[1]; j++) {
int BP[3] = {i-x2, j-y2, 0};
int BCXBP[3] = {BC[1]*BP[2] - BC[2]*BP[1],
BC[2]*BP[0] - BC[0]*BP[2], BC[0]*BP[1] - BC[1]*BP[0]};
dot = BCXBA[0]*BCXBP[0]+BCXBA[1]*BCXBP[1]+BCXBA[2]*BCXBP[2];
if (dot > 0)
cnt++;
} //for
printf("%d\n", cnt);
} //if
else break;
} //while
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator