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

Mở rộng lòng đường

Đề bài

Mô tả

Một con đường được chia thành n đoạn bằng nhau, đánh số từ trái sang phải. Đoạn thứ i có bề rộng phần lòng đường là si và bề rộng phần bãi cỏ là gi.

Với mỗi đoạn i, ta có thể phá bỏ một phần bãi cỏ với độ rộng nguyên xi (0xigi). Sau đó, bề rộng lòng đường mới của đoạn i trở thành si=si+xi và bề rộng bãi cỏ còn lại là gixi.

Ta muốn phá bỏ càng nhiều bãi cỏ càng tốt, đồng thời tránh việc lòng đường thay đổi bề rộng quá đột ngột giữa các đoạn liền kề. Cụ thể, với mọi i (1i<n) phải thỏa mãn |si+1si|1. Lưu ý điều kiện này có thể chưa đúng với cấu hình ban đầu.

Hãy tìm tổng độ rộng bãi cỏ lớn nhất có thể phá bỏ (tức là tối đa i=1nxi), và đưa ra một cấu hình bề rộng lòng đường mới đạt được tổng đó. Nếu không tồn tại cấu hình hợp lệ nào, in ra 1.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số đoạn của con đường.
  • n dòng tiếp theo, dòng thứ i chứa hai số nguyên sigi là bề rộng lòng đường và bề rộng bãi cỏ hiện tại của đoạn i.

Dữ liệu ra

  • Nếu không có cấu hình hợp lệ, in ra một số 1.
  • Ngược lại, dòng đầu in tổng độ rộng bãi cỏ lớn nhất bị phá bỏ. Dòng thứ hai in n số nguyên s1,s2,,sn (sisisi+gi) là bề rộng lòng đường mới của các đoạn.

Ràng buộc

  • 1n2·105
  • 1si106
  • 0gi106

Ví dụ

Input Output Giải thích
3
4 5
4 5
4 10
16
9 9 10
Mở rộng lòng đường thành 9, 9, 10. Các đoạn liền kề chênh nhau tối đa 1. Tổng phá bỏ là (94)+(94)+(104)=16.
4
1 100
100 1
1 100
100 1
202
101 101 101 101
Mọi đoạn đều đưa về 101, thỏa điều kiện chênh lệch. Tổng phá bỏ là 100+1+100+1=202.
3
1 1
100 100
1 1
-1 Đoạn giữa có s2=100 nên s2100, nhưng hai đoạn bên chỉ đạt tối đa bề rộng 2, không thể chênh nhau 1 với đoạn giữa.

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 1.26.3 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