记录编号 42585 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺六]油滴扩展 最终得分 100
用户昵称 GravatarTBK 是否通过 通过
代码语言 C++ 运行时间 0.006 s
提交时间 2012-09-26 17:51:15 内存使用 18.78 MiB
显示代码纯文本
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <cstring>
#include <set>
#include <algorithm>
#define MAXN 0x7fffffff
#define pie 3.1415926
using namespace std;
int a[2200][2200],b,c,d,l,m,n,k[6][2];
double r[6][2],s,t;
bool bo[6];
double ab(int x)
{
    return x>0?x:-x;
}
void DFS(int x)
{
    int i,j;
    double y,z;
    if (x==b)
    {
        z=0;
        for (i=0;i<x;i++) z+=(r[i][1]*r[i][1]*pie);
        if (z>s) s=z;
        return;
    }
    for (i=0;i<b;i++)
        if (bo[i]==false)
        {
            bo[i]=true;
            y=MAXN;
            for (j=0;j<x;j++)
            {
                z=sqrt((double)((k[(int)r[j][0]][0]-k[i][0])*(k[(int)r[j][0]][0]-k[i][0])+(k[(int)r[j][0]][1]-k[i][1])*(k[(int)r[j][0]][1]-k[i][1])));
                if (z-r[j][1]>=0) y=y>z-r[j][1]?z-r[j][1]:y;
                    else y=0;
            }
            z=(double)ab(k[i][0]-c);
            y=y>z?z:y;
            z=(double)ab(k[i][1]-d);
            y=y>z?z:y;
            z=(double)ab(l-k[i][0]);
            y=y>z?z:y;
            z=(double)ab(m-k[i][1]);
            y=y>z?z:y;
            r[x][0]=(double)i;
            r[x][1]=y;
            DFS(x+1);
            bo[i]=false;
        }
}
int main(void)
{
    freopen ("oilbox.in","r",stdin);
    freopen ("oilbox.out","w",stdout);
    scanf("%d%d%d%d%d",&b,&c,&d,&l,&m);
    c+=1000;
    d+=1000;
    l+=1000;
    m+=1000;
    t=ab(l-c)*ab(m-d);
    for (n=0;n<b;n++) 
    {
        scanf("%d%d",&k[n][0],&k[n][1]);
        k[n][0]+=1000;
        k[n][1]+=1000;
    }
    DFS(0);
    printf("%.0lf",t-s);
    fclose(stdin);
    fclose(stdout);
    return 0;
}