Cod sursa(job #2877883)

Utilizator BOSSSTEFANPetrescu Ioan Stefan BOSSSTEFAN Data 25 martie 2022 16:00:51
Problema Infasuratoare convexa Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.36 kb
#include <fstream>
#include <algorithm>
using namespace std;
int st[120001];
ifstream cin("infasuratoare.in");
ofstream cout("infasuratoare.out");
struct ura
{
    float x,y;
    int o;
}p[120001],p1[120001],p2[120001];
bool cmp( ura a, ura b)
{
    if(a.y<b.y)
        return true;
    if(a.y>b.y)
        return false;
    if(a.x<b.x)
        return true;
    return false;
}
int main()
{
    int n,i,k1=1,k2=1,k;
    double a;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>p[i].x>>p[i].y;
        p[i].o=i;
    }
    sort(p+1,p+n+1,cmp);
    p2[1].x=p[1].x;
    p2[1].y=p[1].y;
    p2[1].o=p[1].o;
    for(i=2;i<n;i++)
    {
        a=(p[1].x*p[n].y+p[n].x*p[i].y+p[i].x*p[1].y+p[1].x*p[n].y-p[1].y*p[n].x-p[n].y*p[i].x-p[i].y*p[1].x-p[1].y*p[n].x)/2;
        if(a<0)///punctul se afla la dreapta
        {
            p2[++k2].x=p[i].x;
            p2[k2].y=p[i].y;
            p2[k2].o=p[i].o;
        }
        else
        {
            p1[++k1].x=p[i].x;
            p1[k1].y=p[i].y;
            p2[k1].o=p[i].o;
        }
    }
    p2[++k2].x=p[n].x;
    p2[k2].y=p[n].y;
    p2[k2].o=p[n].o;
    st[1]=1;
    st[2]=2;
    k=2;
    for(i=3;i<=k2;i++)
    {
        a=(p[k-1].x*p[k].y+p[k].x*p[i].y+p[i].x*p[k-1].y+p[k-1].x*p[k].y-p[k-1].y*p[k].x-p[k].y*p[i].x-p[i].y*p[k-1].x-p[k-1].y*p[k].x)/2;
    }
    return 0;
}