CSES Solution Polygon Area (original) (raw)

Last Updated : 31 Jan, 2026

Your task is to calculate the area of a given polygon.

The polygon consists of **n vertices (x 1 ,y 1 ),(x 2 ,y 2 ),.....(x n ,y n ). The vertices ****(x** i ,y i ) and (x i+1 ,y i+1 ) are adjacent for **i=1,2,....,n-1, and the vertices ****(x** 1 ,y 1 ) and ****(x** n ,y n ) are also adjacent.

**Example:

**Input: vertices[] = {{1, 1}, {4, 2}, {3, 5}, {1, 4}}
**Output: 16

**Input: vertices[] = {{1, 3}, {5, 6}, {2, 5}, {1, 4}}
**Output: 6

**Approach:

The idea is to use**Shoelace formula calculates the area of a polygon as **half of the absolute difference between the sum of products of **x-coordinates and **y-coordinates of consecutive vertices.

**Shoelace formula Formula: A = \frac{1}{2} \left| \sum_{i=1}^{n-1} (x_i y_{i+1} - x_{i+1} y_i) + x_n y_1 - x_1 y_n \right|

Steps-by-step approach:

Below is the implementation of the above approach:

C++ `

#include <bits/stdc++.h> using namespace std;

#define ll long long #define endl '\n'

int main() {

// Number of vertices in the polygon
ll n = 4;

// Array to store the vertices of the polygon
pair<ll, ll> vertices[n]
    = { { 1, 3 }, { 5, 6 }, { 2, 5 }, { 1, 4 } };

// Variable to store the area of the polygon
ll area = 0;

// Calculating the area of the polygon using the
// shoelace formula
for (ll i = 0; i < n; i++) {
    area += (vertices[i].first
                * vertices[(i + 1) % n].second
            - vertices[(i + 1) % n].first
                * vertices[i].second);
}

// Printing the absolute value of the area
cout << abs(area);

return 0;

}

Java

import java.util.*;

public class Main {

public static void main(String[] args) {
    // Number of vertices in the polygon
    int n = 4;

    // Array to store the vertices of the polygon
    int[][] vertices = { { 1, 3 }, { 5, 6 }, { 2, 5 }, { 1, 4 } };

    // Variable to store the area of the polygon
    int area = 0;

    // Calculating the area of the polygon using the shoelace formula
    for (int i = 0; i < n; i++) {
        area += (vertices[i][0] * vertices[(i + 1) % n][1]
                - vertices[(i + 1) % n][0] * vertices[i][1]);
    }

    // Printing the absolute value of the area
    System.out.println(Math.abs(area));
}

}

Python

Importing the math module for absolute function

import math

Number of vertices in the polygon

n = 4

List to store the vertices of the polygon

vertices = [(1, 3), (5, 6), (2, 5), (1, 4)]

Variable to store the area of the polygon

area = 0

Calculating the area of the polygon using the shoelace formula

for i in range(n): area += (vertices[i][0] * vertices[(i + 1) % n][1] - vertices[(i + 1) % n][0] * vertices[i][1])

Printing the absolute value of the area

print(math.fabs(area))

C#

using System;

public class MainClass { public static void Main(string[] args) { // Number of vertices in the polygon int n = 4;

    // Array to store the vertices of the polygon
    Tuple<int, int>[] vertices = new Tuple<int, int>[] {
        Tuple.Create(1, 3),
        Tuple.Create(5, 6),
        Tuple.Create(2, 5),
        Tuple.Create(1, 4)
    };

    // Variable to store the area of the polygon
    long area = 0;

    // Calculating the area of the polygon using the shoelace formula
    for (int i = 0; i < n; i++) {
        area += (vertices[i].Item1 * vertices[(i + 1) % n].Item2)
              - (vertices[(i + 1) % n].Item1 * vertices[i].Item2);
    }

    // Printing the absolute value of the area
    Console.WriteLine(Math.Abs(area));
}

}

JavaScript

// Number of vertices in the polygon let n = 4;

// Array to store the vertices of the polygon let vertices = [ { x: 1, y: 3 }, { x: 5, y: 6 }, { x: 2, y: 5 }, { x: 1, y: 4 } ];

// Variable to store the area of the polygon let area = 0;

// Calculating the area of the polygon using the // shoelace formula for (let i = 0; i < n; i++) { area += (vertices[i].x * vertices[(i + 1) % n].y - vertices[(i + 1) % n].x * vertices[i].y); }

// Printing the absolute value of the area console.log(Math.abs(area));

`

**Time complexity: O(N), where N is the number of points.
**Auxiliary Space: O(1)