| ||||||||||
| 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 | |||||||||
奇怪,我怎么做都WA,有人能帮我看看吗#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#define eps 1e-12
struct pos{
double x,y;
}p[200];
double cal(int s,int e)
{
double sum = 0;
int i;
for (i = s; i < s+e; i ++){
sum += p[i%8].x*p[(i+1)%8].y-p[i%8].y*p[(i+1)%8].x;
}
sum += p[(s+e)%8].x*p[s%8].y-p[(s+e)%8].y*p[s%8].x;
sum = (double)fabs(sum*0.5);
return sum;
}
void solve()
{
double t_area,area1,area2;
double best1,best2;
int i,j;
t_area = cal(0,7);
double min = t_area;
for (i = 0 ; i < 8 ; i ++){
for (j = 0; j < 8; j ++){
area1 = cal(i,j); area2 = t_area - area1;
if (fabs(area1-area2) < min){
min = fabs(area1-area2);
best1 = area1; best2 = area2;
}
}
}
if (best1 < best2)
printf("%.3lf %.3lf\n",best1,best2);
else
printf("%.3lf %.3lf\n",best2,best1);
}
int main()
{
freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
int i,j,count = 0;
double t;
while (1)
{
t = 0;
for (i = 0 ; i < 4 ; i ++){
scanf("%lf %lf",&p[i].x,&p[i].y);
t += p[i].x + p[i].y;
}
if (fabs(t) < eps) break;
count ++;
j = 3;
for (i = 6; i >= 2 ; i -= 2){
p[i].x = p[j].x; p[i].y = p[j].y;
j --;
}
for (i = 1; i < 8; i +=2){
p[i].x = (double)(p[i-1].x+p[(i+1)%8].x)/2;
p[i].y = (double)(p[i-1].y+p[(i+1)%8].y)/2;
}
printf("Cake %d: ",count);
solve();
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator