Pagini recente » Cod sursa (job #2253005) | Cod sursa (job #1572105) | Cod sursa (job #3211294) | Cod sursa (job #1138462) | Cod sursa (job #2222825)
#include <cstdio>
#define bufferSize 1 << 16
char inBuffer[bufferSize];
int index = bufferSize;
__attribute__((always_inline)) char get_char()
{
if(index == bufferSize)
{
fread(inBuffer, 1, bufferSize, stdin);
index = 0;
}
return inBuffer[index++];
}
double get_double()
{
char c = get_char(), sign = '+'; double integerPart = 0;
for(; c < 48 || c > 57; c = get_char()) sign = c;
for(; c > 47 && c < 58; c = get_char()) integerPart = integerPart * 10 + c - '0';
if(c == '.')
{
double fractionalPart = 0, power = 1;
for(; (c = get_char()) > 47 && c < 58; power *= 10)
fractionalPart = fractionalPart * 10 + c - '0';
integerPart += fractionalPart / power;
}
return (sign == '-') ? -integerPart : integerPart;
}
struct point{double x, y;}p[100002];
int main()
{
freopen("aria.in", "r", stdin);
freopen("aria.out", "w", stdout);
int N; double area = 0;
N = get_double();
for(int i = 1; i <= N; ++i)
{
p[i].x = get_double();
p[i].y = get_double();
}
p[N + 1].x = p[1].x;
p[N + 1].y = p[1].y;
for(int i = 1; i <= N; i++)
{
area += p[i].x * p[i + 1].y - p[i].y * p[i + 1].x;
}
printf("%.5lf", area / 2);
return 0;
}