제출 #1152405

#제출 시각아이디문제언어결과실행 시간메모리
1152405dzuizzGeometrija (COCI21_geometrija)C++20
50 / 110
1093 ms25200 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define Point pair<int,int> #define x first #define y second struct Line { Point p,q; Line(int a=0, int b=0, int c=0, int d=0){ p=Point(a,b); q=Point(c,d); } }; int cross(Point A, Point B, Point C){ int xAB=B.x-A.x, yAB=B.y-A.y; int xAC=C.x-A.x, yAC=C.y-A.y; int res=xAB*yAC-xAC*yAB; if(res<0) return -1; if(res==0) return 0; return 1; } int isIntersect(Line A, Line B) { return cross(A.p,A.q,B.p) != cross(A.p,A.q,B.q) && cross(B.p,B.q,A.p) != cross(B.p,B.q,A.q); } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin>>n; Point a[n]; for(int i=0;i<n;++i) cin>>a[i].x>>a[i].y; vector<pair<pair<int,int>,Line>> lines; for(int i=0;i<n;++i) for(int j=i+1;j<n;++j){ lines.push_back({{i,j},Line(a[i].x,a[i].y,a[j].x,a[j].y)}); } int ans=0; int sz=lines.size(); for(int i=0;i<sz;++i) { bool f=0; for(int j=0;j<sz&&!f;++j) if(i!=j &&lines[i].first.first!=lines[j].first.first &&lines[i].first.second!=lines[j].first.first &&lines[i].first.first!=lines[j].first.second &&lines[i].first.second!=lines[j].first.second) { f|=isIntersect(lines[i].second,lines[j].second); } ans+=(!f); } cout<<ans<<'\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...