Cod sursa(job #2745714)

Utilizator Alexandru_GaloiuAlexandru Galoiu Alexandru_Galoiu Data 26 aprilie 2021 22:13:13
Problema Trapez Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.81 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("triunghi.in");
ofstream cout("triunghi.out");
double epsilon=1e-14;
struct taran
{
    int x1,x2,x3,y1,y2,y3;
};
taran v[66];
int afis[66];
double arie(int x1,int y1,int x2,int y2,int x3,int y3)
{
    return fabs((x3-x1)*(y2-y1)-(x2-x1)*(y3-y1));
}
bool fa(int j,int i)
{
    double abc=arie(v[i].x1,v[i].y1,v[i].x2,v[i].y2,v[i].x3,v[i].y3);
    if(fabs(abc-(arie(v[i].x1,v[i].y1,v[i].x2,v[i].y2,v[j].x1,v[j].y1)+arie(v[i].x2,v[i].y2,v[i].x3,v[i].y3,v[j].x1,v[j].y1)+arie(v[i].x3,v[i].y3,v[i].x1,v[i].y1,v[j].x1,v[j].y1)))>epsilon)
        return 0;
    if(fabs(abc-(arie(v[i].x1,v[i].y1,v[i].x2,v[i].y2,v[j].x2,v[j].y2)+arie(v[i].x2,v[i].y2,v[i].x3,v[i].y3,v[j].x2,v[j].y2)+arie(v[i].x3,v[i].y3,v[i].x1,v[i].y1,v[j].x2,v[j].y2)))>epsilon)
        return 0;
    if(fabs(abc-(arie(v[i].x1,v[i].y1,v[i].x2,v[i].y2,v[j].x3,v[j].y3)+arie(v[i].x2,v[i].y2,v[i].x3,v[i].y3,v[j].x3,v[j].y3)+arie(v[i].x3,v[i].y3,v[i].x1,v[i].y1,v[j].x3,v[j].y3)))>epsilon)
        return 0;
    return 1;
}
int main()
{
    int n,i,x,y,cnt=0,j;
    cin>>n;
    for(i=1; i<=n; i++)
        cin>>v[i].x1>>v[i].y1>>v[i].x2>>v[i].y2>>v[i].x3>>v[i].y3;
    cin>>x>>y;
    for(i=1; i<=n; i++)
        if((int)arie(v[i].x1,v[i].y1,v[i].x2,v[i].y2,v[i].x3,v[i].y3)==(int)(arie(v[i].x1,v[i].y1,v[i].x2,v[i].y2,x,y)+arie(v[i].x2,v[i].y2,v[i].x3,v[i].y3,x,y)+arie(v[i].x3,v[i].y3,v[i].x1,v[i].y1,x,y)))
            afis[++cnt]=i;
    cout<<cnt;
    for(i=1; i<=cnt; i++)
        cout<<" "<<afis[i];
    cout<<'\n';
    for(i=1; i<=n; i++)
    {
        cnt=0;
        for(j=1; j<=n; j++)
            if(j!=i)
                cnt+=fa(j,i);
        if(cnt==n-1)
        {
            cout<<i;
            return 0;
        }
    }
    cout<<0;
    return 0;
}