알 수 없는 함수 F:R→R에서 얻은 유한한 표본점 집합에 함수를 맞추는 것은 수학의 기본 문제다. 가장 흔한 형태는 표본점에 가장 잘 맞는 일차함수 F를 찾는 것이다. F를 x1<x2<⋯<xn에서 표본으로 얻었다고 하자. F가 표본점에 얼마나 잘 맞는지는 다음 오차로 잴 수 있다.
error(F,F)=max1≤i≤nF(xi)−F(xi)
그런데 표본점에서의 함숫값을 정확히 알지 못한다. 대신 각 F(xi)의 이산확률분포를 알고 있다. 즉 가능한 값 yi,1,…,yi,mi와 그 확률 pi,j가 주어지고, Pr[F(xi)=yi,j]=pi,j이다. 이때 오차는 기댓값을 써서 다음과 같이 정의한다.
error(F,F)=max1≤i≤nE[F(xi)−F(xi)]
이 오차를 최소로 만드는 일차함수 F(x)=ax+b를 찾아, 그 최소 오차를 구하는 프로그램을 작성하시오.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 표본점의 개수 n이 주어진다 (1≤n≤105). 다음 n개의 줄에는 표본점의 정보가 x가 증가하는 순서로 한 줄에 하나씩 주어진다. i번째 표본점의 줄은 함수를 표본으로 얻은 위치 xi와 분포의 크기 mi로 시작한다 (0≤xi≤109, 1≤mi≤10). 이어서 xi에서 가능한 함숫값 mi개 yi,1,…,yi,mi가 주어지고 (0≤yi,j<109), 마지막으로 확률 mi개 pi,1,…,pi,mi가 주어진다 (0≤pi,j≤100). 실제 확률은 pi,j를 100으로 나눈 값이고, 표본점 하나마다 확률 mi개의 합은 100이다. 모든 값은 정수이고 x1<x2<⋯<xn이다. 입력의 마지막 줄에는 0이 하나 주어지며, 이 줄은 테스트 케이스가 아니다.
각 테스트 케이스마다 최소 오차를 소수점 아래 한 자리까지 반올림해 한 줄에 출력한다. 정확히 중간인 값은 올린다. 예를 들어 0.25는 0.3으로 출력한다.