Cod sursă (job #816373)

Utilizator avatar andycristu Cristu Andrei-Toma andycristu IP ascuns
Problemă Înfășurătoare convexă Compilator cpp-32 | 1,25 kb
Rundă Arhiva de probleme Status evaluat
Dată 27 mar. 2025 11:06:05 Scor 0
#include <fstream>

using namespace std;
ifstream cin ("infasuratoareconvexa.in");
ofstream cout ("infasuratoareconvexa.out");
struct coord{
int x;
int y;
};
coord v[100001];
int main()
{
    int n, i, j, min = 1000000001, minx = 1000000001, xo = 0, yo = 0, aux;
    float tg1, tg2;
    cin >> n;
    for (i = 1;i <= n;i++)
    {
        cin >> v[i].x >> v[i].y;
        if (v[i].y < min)
        {
            min = v[i].y;
            minx = v[i].x;
        }
        else if (v[i].y == min)
        {
            if (minx > v[i].x)
            {
                min = v[i].y;
                minx = v[i].x;
            }
        }
    }
    yo = min;
    xo = minx;
    for (i = 1;i < n;i++)
    {
        for (j = i + 1;j <= n;j++)
        {
            tg1 = (v[i].y - min + 0.0) / (v[i].x - minx);
            tg2 = (v[j].y - min + 0.0) / (v[j].x - minx);
            if (tg1 > tg2)
            {
                aux = v[i].x;
                v[i].x = v[j].x;
                v[j].x = aux;
                aux = v[i].y;
                v[i].y = v[j].y;
                v[j].y = aux;
            }
        }
    }
    for (i = 1;i <= n;i++)
    {
        cout << v[i].x << " " << v[i].y << endl;
    }
    return 0;
}