trang chủ / bài tập / dynscore

Tính điểm động

Đề bài

Mô tả

Vasya và Petya cùng tham gia một kỳ thi lập trình kéo dài hai giờ, gồm đúng 5 bài. Kỳ thi dùng cơ chế tính điểm động (dynamic scoring).

Điểm tối đa của mỗi bài phụ thuộc vào tỉ lệ giữa số thí sinh giải được bài đótổng số thí sinh của kỳ thi. Mọi thí sinh nộp ít nhất một lần bài đều được tính là tham gia kỳ thi. Gọi tỉ lệ này là r, khi đó điểm tối đa của bài được xác định như sau:

Tỉ lệ r (số người giải / tổng số người) Điểm tối đa
12<r1 500
14<r12 1000
18<r14 1500
116<r18 2000
132<r116 2500
0r132 3000

Ví dụ, nếu kỳ thi có 40 người tham gia và 10 người giải được một bài thì r=14, và điểm tối đa của bài đó là 1500.

Nếu điểm tối đa của một bài là x và một thí sinh nộp lời giải đúng của bài đó tại phút thứ t tính từ lúc bắt đầu (số phút nguyên đã trôi qua), thì thí sinh đó được x·(1t250) điểm cho bài này.

Kỳ thi có n thí sinh, gồm cả Vasya và Petya. Với mỗi thí sinh và mỗi bài, ta biết số phút đã trôi qua từ lúc bắt đầu đến khi thí sinh đó nộp bài (hoặc bài đó chưa được giải). Vào thời điểm còn hai giây trước khi kết thúc, mọi bài nộp đều đã qua pretest và không có hack nào. Coi như không còn bài nộp hay hack nào nữa và mọi bài nộp sẽ qua hệ thống test.

Vasya là kẻ gian lận: anh ta đã đăng ký sẵn rất nhiều tài khoản mới. Từ mỗi tài khoản mới này, Vasya có thể:

  • nộp lời giải đúng cho bất kỳ bài nào mà chính anh ta đã giải được (làm tăng số người giải bài đó), hoặc
  • nộp một lời giải sai cho một bài bất kỳ (chỉ để tài khoản đó được tính là một thí sinh tham gia).

Vasya không thể nộp lời giải đúng cho những bài mà chính anh ta chưa giải được. Mọi thao tác trên diễn ra tức thời (không tốn thêm phút nào), nên chỉ làm thay đổi số người tham gia và số người giải từng bài, không ảnh hưởng tới thời điểm nộp của Vasya và Petya.

Vasya muốn đạt tổng điểm lớn hơn hẳn (strictly more) Petya. Hãy tìm số tài khoản mới ít nhất mà Vasya cần dùng để đạt mục tiêu, hoặc kết luận rằng anh ta không thể.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số thí sinh của kỳ thi (kể cả Vasya và Petya).
  • n dòng tiếp theo, mỗi dòng chứa 5 số nguyên ai,1,ai,2,,ai,5: giá trị ai,j là số phút đã trôi qua đến khi thí sinh i nộp bài j, hoặc 1 nếu thí sinh i chưa giải được bài j.

Vasya là thí sinh số 1, Petya là thí sinh số 2; các thí sinh còn lại được liệt kê theo thứ tự tùy ý. Mỗi thí sinh giải được ít nhất một bài.

Dữ liệu ra

In ra một số nguyên — số tài khoản mới ít nhất Vasya cần dùng để có điểm lớn hơn hẳn Petya, hoặc 1 nếu không thể.

Ràng buộc

  • 2n120
  • 1ai,j119

Ví dụ

Input Output Giải thích
2
5 15 40 70 115
50 45 40 30 15
2 Dùng 2 tài khoản mới nộp đúng 3 bài cuối. Khi đó 2 bài đầu có điểm tối đa 1000, 3 bài cuối có điểm 500. Vasya được 980+940+420+360+270=2970, Petya được 800+820+420+440+470=2950.
3
55 80 10 -1 -1
15 -1 79 60 -1
42 -1 13 -1 -1
3 Từ 2 tài khoản mới nộp sai để tăng tổng số người, và từ tài khoản thứ 3 nộp đúng bài 1. Điểm tối đa 5 bài thành 500,1500,1000,1500,3000. Vasya được 2370, Petya được 2294.
4
-1 20 40 77 119
30 10 73 50 107
21 29 -1 64 98
117 65 -1 -1 -1
-1 Dù thêm bao nhiêu tài khoản, Vasya vẫn không thể vượt Petya.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0