Task: | Polygon area |
Sender: | Rasse |
Submission time: | 2024-11-11 16:20:52 +0200 |
Language: | C++ (C++17) |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.00 s | details |
#2 | ACCEPTED | 0.00 s | details |
#3 | ACCEPTED | 0.00 s | details |
Code
#include <iostream> #include <vector> #include <array> #include <string> #include <algorithm> #include <numeric> #include <unordered_map> #include <unordered_set> #include <queue> #include <climits> #include <cmath> #include <functional> #include <type_traits> #include <fstream> #include <bitset> #include <complex> #define int long long using namespace std; //#define cross(x, y) ((x).real()*(y).imag()-(x).imag()*(y).real()) #define cross(x, y) (((x)*conj(y)).imag()) #define sign(v) ((0 < (v)) - ((v) < 0)) void solve() { int n; cin >> n; int px, py; cin >> px >> py; complex<int> prev = {px, py}; complex<int> first = prev; int res = 0; for (int i = 0; i < n-1; i++) { int x, y; cin >> x >> y; complex<int> v = {x, y}; res += cross(prev, v); prev = v; } res += cross(prev, first); cout << abs(res); } signed main() { ios::sync_with_stdio(0); //cin.tie(0); int t = 1; //cin >> t; //ifstream f("testcase.txt"); //cin.rdbuf(f.rdbuf()); for (int i = 0; i < t; i++) solve(); }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
100 -7 -19 91 77 100 100 64 60 ... |
correct output |
---|
43582 |
user output |
---|
43582 |
Test 2
Verdict: ACCEPTED
input |
---|
1000 365625896 -113418831 278762563 38777445 250367343 -96991975 175866909 -129766978 ... |
correct output |
---|
4053466653883387139 |
user output |
---|
4053466653883387139 |
Test 3
Verdict: ACCEPTED
input |
---|
4 -1000000000 -1000000000 -1000000000 1000000000 1000000000 1000000000 1000000000 -1000000000 |
correct output |
---|
8000000000000000000 |
user output |
---|
8000000000000000000 |