What's wrong with my program? Please help.. is it the 8-inch precision stuff i dont understand
#include <stdio.h>
#include <math.h>
 
long X[1010], Y[1010];
int N, L;
 
int st[1002], ss;
 
long double R;
 
#define PI 3.14159265358979323846
 
#define det(x0, y0, x1, y1, x2, y2) ((x1-x0)*(y2-y0) - (x2-x0)*(y1-
y0))
#define cc(a, b, c) (det(X[a], Y[a], X[b], Y[b], X[c], Y[c]) >= 0)
 
void add(int x)
{
    while (ss > 1 && cc(st[ss-2], st[ss-1], x)) ss--;
    st[ss++] = x;
}
 
void solve()
{
    int i;
    for (ss = i = 0; i < N; i++)
        add(i);
    add(0);
    R = (long double) (2*PI)*(long double) L;
    for (i = 0; i < ss-1; i++)
        R += sqrtl((X[st[i]]-X[st[i+1]])*(X[st[i]]-X[st[i+1]])+(Y[st
[i]]-Y[st[i+1]])*(Y[st[i]]-Y[st[i+1]]));
}
 
void read_data()
{
    int i;
    scanf("%d %d", &N, &L);
    for (i = 0; i < N; i++)
        scanf("%ld %ld", X+i, Y+i);
}
 
void main()
{
    read_data();
    solve();
    printf("%.0Lf\n", R);
}