← Home
For problem statement at 0-999/900-999/960-969/961/problemD.txt this is a correct solution, but verifier at 0-999/900-999/960-969/961/verifierD.go ends with All tests passed can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"os"
)

type Point struct {
	x, y int64
}

func collinear(a, b, c Point) bool {
	return (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x) == 0
}

func check(p []Point, i, j int) bool {
	c, d := -1, -1
	for k := 0; k < len(p); k++ {
		if !collinear(p[i], p[j], p[k]) {
			if c == -1 {
				c = k
			} else if d == -1 {
				d = k
			} else if !collinear(p[c], p[d], p[k]) {
				return false
			}
		}
	}
	return true
}

func main() {
	in := bufio.NewReaderSize(os.Stdin, 1<<20)
	var n int
	fmt.Fscan(in, &n)
	p := make([]Point, n)
	for i := 0; i < n; i++ {
		fmt.Fscan(in, &p[i].x, &p[i].y)
	}

	if n <= 4 || check(p, 0, 1) || check(p, 0, 2) || check(p, 1, 2) {
		fmt.Println("YES")
	} else {
		fmt.Println("NO")
	}
}