Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct point{
- int x, y;
- };
- point P[mx];
- int area(point a, point b){
- return (a.x * b.y - b.x * a.y);
- }
- int polyarea(int n){
- int ans = area(P[n - 1], P[0]);
- for(int i=1;i<n;i++){
- ans += area(P[i-1], P[i]);
- }
- return llabs(ans)/2;
- }
- int pointinline(int n){
- int ans = __gcd(llabs(P[0].x - P[n-1].x), llabs(P[0].y - P[n-1].y));
- for(int i=1;i<n;i++){
- ans += __gcd(llabs(P[i-1].x - P[i].x), llabs(P[i-1].y - P[i].y));
- }
- return ans;
- }
- int picks(int n){
- int B = pointinline(n);
- int A = polyarea(n);
- int I = A - B/2 + 1;
- return I;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement