Language: C++

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
const double pi = acos(-1.0);
 
struct node
{
    int x,y;
} a[200005];
 
int b[200005];
int c[200005];
 
bool cmp(node aa,node bb)
{
    return aa.x < bb.x;
}
 
bool comp(node aa,node bb)
{
    return aa.x > bb.x;
}
 
int main()
{
    node pa,pb;
 
    scanf("%d%d%d%d",&pa.x,&pa.y,&pb.x,&pb.y);
 
    if (pa.x > pb.x) swap(pa,pb);
    else if (pa.x == pb.x && pa.y > pb.y) swap(pa,pb);
 
    int n;
 
    scanf("%d",&n);
 
    for (int i = 0;i < n;i++)
    {
        scanf("%d%d",&a[i].x,&a[i].y);
    }
 
    if (pa.x == pb.x)
    {
        bool f = 0;
 
        for (int i = 0;i < n;i++)
        {
            if (pa.y < a[i].y && pb.y > a[i].y && a[i].x == pa.x)
                f = 1;
        }
 
        long double ans;
 
        if (f)  ans = (pb.y - pa.y - 2) * 100 + pi * 10 + 180;
        else ans = (pb.y - pa.y) * 100;
 
        printf("%.20Lf\n",ans);
    }
    else if (pa.y == pb.y)
    {
        bool f = 0;
 
        for (int i = 0;i < n;i++)
        {
            if (pa.x <a[i].x && pb.x > a[i].x && pa.y == a[i].y)
                f = 1;
        }
 
        long double ans;
 
        if (f)  ans = (pb.x - pa.x - 2) * 100 + pi * 10 + 180;
        else ans = (pb.x - pa.x) * 100;
 
        printf("%.20Lf\n",ans);
    }
    else if (pb.y > pa.y)
    {
        sort(a,a+n,cmp);
 
        int cnt = 0;
 
        for (int i = 0;i < n;i++)
        {
            if (pa.x <= a[i].x && a[i].x <= pb.x && a[i].y <= pb.y && a[i].y >= pa.y)
            {
                b[cnt++] = a[i].y;
            }
        }
 
        bool ff = 0;
 
        if (cnt == 0) ff = 1;
 
        int len = 1;
 
        c[0] = b[0];
 
        for (int i = 1;i < cnt;i++)
        {
            if (b[i] > c[len-1])
            {
                c[len++] = b[i];
            }
            else
            {
                int pos = lower_bound(c,c+len,b[i]) - c;
 
                c[pos] = b[i];
            }
        }
 
        if (ff) len = 0;
 
        long double ans = (pb.x - pa.x + pb.y - pa.y) * 100 - (20 - pi * 10 / 2) * len;
 
        printf("%.20Lf\n",ans);
    }
    else
    {
        sort(a,a+n,comp);
 
        int cnt = 0;
 
        for (int i = 0;i < n;i++)
        {
            if (pa.x <= a[i].x && a[i].x <= pb.x && a[i].y >= pb.y && a[i].y =< pa.y)
            {
                b[cnt++] = a[i].y;
            }
        }
 
        int len = 1;
 
        c[0] = b[0];
 
        for (int i = 1;i < cnt;i++)
        {
            if (b[i] > c[len-1])
            {
                c[len++] = b[i];
            }
            else
            {
                int pos = lower_bound(c,c+len,b[i]) - c;
 
                c[pos] = b[i];
            }
        }
 
        if (cnt == 0) len = 0;
 
        long double ans = (pb.x - pa.x + pa.y - pb.y) * 100 - (20 - pi * 10 / 2) * len;
 
        printf("%.20Lf\n",ans);
    }
 
    return 0;
}

Compiler output:
a.cc: In function 'int main()':
a.cc:128:79: error: expected primary-expression before '<' token
  128 |             if (pa.x <= a[i].x && a[i].x <= pb.x && a[i].y >= pb.y && a[i].y =< pa.y)
      |                                                                               ^