1 /*
2 1、入手点为k(<=1000)
3 2、逆序dp,保证最佳路径
4 */
5 #include<cstdio>
6 #include<cstring>
7 #include<cmath>
8 #include<algorithm>
9 using namespace std;
10 typedef struct
11 {
12 int x,y;
13 } cus;
14
15 cus a[1005];
16 int d[1005];
17
18 int cmp(cus p1,cus p2)
19 {
20 if(p1.x == p2.x)
21 return p1.y < p2.y;
22 return p1.x < p2.x;
23 }
24
25 int solven(int t)
26 {
27 int ans=0;
28 int i,j;
29 for(i=t-2; i>=0; --i)
30 {
31 for(j=i+1; j<t; ++j)
32 if(a[i].x<a[j].x && a[i].y<a[j].y && d[i]<d[j]+1)
33 d[i] = d[j] + 1;
34 if(ans < d[i])
35 ans = d[i];
36 }
37 return ans;
38 }
39
40 int main()
41 {
42 int i,t,n,m;
43 double ans;
44 while(scanf("%d%d",&n,&m) != EOF)
45 {
46 scanf("%d",&t);
47 for(i=0; i<t; ++i)
48 {
49 scanf("%d%d",&a[i].x,&a[i].y);
50 d[i] = 1;
51 }
52 sort(a,a+t,cmp);
53 t = solven(t);
54 ans = (n + m - 2*t + t*sqrt(2.0))*100.0;
55 printf("%.lf\n",ans);
56 }
57 return 0;
58 }