제출 #1152684

#제출 시각아이디문제언어결과실행 시간메모리
1152684thelegendary08Geometrija (COCI21_geometrija)C++17
0 / 110
4 ms320 KiB
#include<bits/stdc++.h> #define f0r(i,n) for(int i = 0; i<n; i++) #define pb push_back #define vi vector<long long int> #define ll long long int #define mp make_pair #define pii pair<ll,ll> #define FOR(i, k, n) for(int i = k; i<n; i++) const double pi = 3.14159265358979; using namespace std; double dir(pii a, pii b){ double x = atan((b.second - a.second) / (b.first - a.first + 0.0)); return x; } bool side(pii a, pii b, pii c){ //cout<<dir(a,b)<<' '<<dir(a,c)<<'\n'; return (c.second-a.second) * (b.first - a.first) - (c.first-a.first) * (b.second - a.second) > 0; } bool intersect(pii a, pii b, pii c, pii d){ if(min(a.first, b.first) > max(c.first, d.first) || min(c.first, d.first) > max(a.first, b.first) || min(a.second, b.second) > max(c.first, d.first) || min(c.second, d.second) > max(a.second, b.second))return 0; else if(side(a,b,c) == side(a,b,d))return 0; return 1; } int main(){ int n; cin>>n; vector<pii> v; f0r(i,n){ int a,b; cin>>a>>b; v.pb({a,b}); } //cout<<side(v[0],v[2],v[1])<<'\n'; //cout<<side(v[0],v[2],v[3])<<'\n'; int ans = 0; f0r(i,n){ FOR(j, i+1, n){ bool ok = 1; f0r(k, n){ FOR(l, k+1, n){ if(i != k && i != l && j != k && j != l){ if(intersect(v[i], v[j], v[k], v[l])){ ok = 0; } } } } if(ok){ ans++; //cout<<i<<' '<<j<<'\n'; } } } cout<<ans<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...