无敌死耗子 2013-05-25 06:18:00
点我顶贴
收藏
删除
c++
#include <iostream>
#include <math.h>
using namespace std;
struct pack
{
int x,y;
long long z;
};
pack a[100001];
int f[100001]={};
int main()
{
int i,j,m,n,k,max=0;
double ans;
cin>>m>>n>>k;
for(i=1;i<=k;i++)
{
cin>>a[i].x>>a[i].y;
a[i].z=a[i].x*100000-a[i].y;
}
for(i=1;i<k;i++)
{
for(j=i+1;j<=k;j++)
{
if(a[i].z>a[j].z)
swap(a[i],a[j]);
}
}
for(i=1;i<=k;i++)
{
for(j=1;j<i;j++)
{
if(a[j].y<a[i].y && f[j]>f[i])
f[i]=f[j];
}
f[i]++;
if(f[i]>max)
max=f[i];
}
ans=100*(m+n-2*max)+100*sqrt(2)*max;
cout<<int(ans+0.5)<<endl;
//system("pause");
return 0;
}