讨论 / 求助
无敌死耗子 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;

}

查看更多回复
提交回复