#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |