← Home
For problem statement at 0-999/300-399/300-309/306/problemD.txt this is a correct solution, but verifier at 0-999/300-399/300-309/306/verifierD.go ends with All tests passed can you fix the verifier? ```go
package main

import (
	"fmt"
	"math"
	"math/rand"
	"time"
)

func main() {
	var n int
	if _, err := fmt.Scan(&n); err != nil {
		return
	}

	if n <= 4 {
		fmt.Println("No solution")
		return
	}

	r := rand.New(rand.NewSource(time.Now().UnixNano()))

	x := make([]float64, n)
	y := make([]float64, n)
	l := make([]float64, n)

	for {
		for i := 0; i < n; i++ {
			x[i] = r.Float64()*2.0 - 1.0
		}

		c1, d1 := 0.0, 0.0
		for i := 0; i < n; i++ {
			angle := 2.0 * math.Pi * float64(i+1) / float64(n)
			c1 += x[i] * math.Cos(angle)
			d1 += x[i] * math.Sin(angle)
		}
		c1 *= 2.0 / float64(n)
		d1 *= 2.0 / float64(n)

		ymin := math.MaxFloat64
		ymax := -math.MaxFloat64

		for i := 0; i < n; i++ {
			angle := 2.0 * math.Pi * float64(i+1) / float64(n)
			y[i] = x[i] - c1*math.Cos(angle) - d1*math.Sin(angle)
			if y[i] < ymin {
				ymin = y[i]
			}
			if y[i] > ymax {
				ymax = y[i]
			}
		}

		if ymax-ymin < 1e-6 {
			continue
		}

		S := 400.0 / (ymax - ymin)
		for i := 0; i < n; i++ {
			l[i] = y[i]*S + 500.0 - ymin*S
		}

		valid := true
		for i := 0; i < n; i++ {
			for j := i + 1; j < n; j++ {
				if math.Abs(l[i]-l[j]) < 0.1 {
					valid = false
					break
				}
			}
			if !valid {
				break
			}
		}

		if valid {
			break
		}
	}

	cx, cy := 0.0, 0.0
	for i := 0; i < n; i++ {
		fmt.Printf("%.9f %.9f\n", cx, cy)
		angle := float64(i) * 2.0 * math.Pi / float64(n)
		cx += l[i] * math.Cos(angle)
		cy += l[i] * math.Sin(angle)
	}
}
```