⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 toj 2f.txt

📁 ACM资料大集合
💻 TXT
字号:
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <stdlib.h>
//#include <time.h>
using namespace std;

#define INFI 99999999
typedef struct POINT
{
	double x;
	double y;
}POINT;

POINT point[5];
POINT shuru[8];
POINT mid[4];
double toar;

double get_cj(POINT a,POINT b)
{
	return a.x*b.y-a.y*b.x;
}

double get_area(int num)
{//num边形的面积
	int i;
	double area=0;
	for(i=0;i<num;i++)
		area+=get_cj(point[i],point[(i+1)%num]);
	return area/2;
}

void solve()
{
	double min1=INFI,min2=INFI,min=INFI,tt;
	int i;
	for(i=0;i<8;i+=2) point[(i/2)]=shuru[i];
	toar=get_area(4)/2;

	for(i=0;i<8;i+=2)
	{
		shuru[i+1].x=(shuru[i].x+shuru[(i+2)%8].x)/2;
		shuru[i+1].y=(shuru[i].y+shuru[(i+2)%8].y)/2;
	}
	point[0]=shuru[0];point[1]=shuru[2];point[2]=shuru[3];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
//	printf("%.3f %.3f %.3f\n",tt,min,min1);
	point[0]=shuru[0];point[1]=shuru[2];point[2]=shuru[4];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}			
//	printf("%.3f %.3f %.3f\n %.3f",tt,min,min1,toar);
   	point[0]=shuru[0];point[1]=shuru[5];point[2]=shuru[6];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
//	printf("%.3f %.3f %.3f\n",tt,min,min1);
	point[0]=shuru[2];point[1]=shuru[4];point[2]=shuru[5];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
//	printf("%.3f %.3f %.3f\n",tt,min,min1);
	point[0]=shuru[2];point[1]=shuru[4];point[2]=shuru[6];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
//	printf("%.3f %.3f %.3f\n",tt,min,min1);	
	point[0]=shuru[0];point[1]=shuru[2];point[2]=shuru[7];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}

	point[0]=shuru[0];point[1]=shuru[1];point[2]=shuru[7];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
	point[0]=shuru[1];point[1]=shuru[2];point[2]=shuru[3];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
	point[0]=shuru[1];point[1]=shuru[2];point[2]=shuru[4];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
	point[0]=shuru[0];point[1]=shuru[1];point[2]=shuru[6];tt=get_area(3);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}	
	point[0]=shuru[0];point[1]=shuru[1];point[2]=shuru[5];point[3]=shuru[6];tt=get_area(4);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
//	printf("%.3f %.3f %.3f\n",tt,min,min1);
	point[0]=shuru[0];point[1]=shuru[2];point[2]=shuru[3];point[3]=shuru[7];tt=get_area(4);if(min>fabs(toar-tt)) {min=fabs(toar-tt);min1=tt;}
//	printf("%.3f %.3f %.3f\n",tt,min,min1);
	if(min1>2*toar-min1) min1=2*toar-min1;
	min2=2*toar-min1;
	printf("%.3f %.3f\n",min1,min2);
}


int main()
{
	int i=1;
	scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&shuru[0].x,&shuru[0].y,&shuru[2].x,&shuru[2].y,&shuru[4].x,&shuru[4].y,&shuru[6].x,&shuru[6].y);
	while(!(shuru[0].x==0 &&shuru[0].y==0 &&shuru[2].x==0 &&shuru[2].y==0 && shuru[4].x==0 &&shuru[4].y==0 && shuru[6].x==0 &&shuru[6].y==0))
	{
		printf("Cake %d: ",i);
		solve();
		i++;
		scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&shuru[0].x,&shuru[0].y,&shuru[2].x,&shuru[2].y,&shuru[4].x,&shuru[4].y,&shuru[6].x,&shuru[6].y);
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -