trang chủ / đề bài / trickyfn

Hàm rắc rối

Đề bài

Mô tả

Cho một dãy số nguyên a gồm n phần tử, đánh số từ 1: a[1],a[2],…,a[n].

Với hai chỉ số i,j bất kỳ, định nghĩa

g(i,j)=∑k=min(i,j)+1max(i,j)a[k]

tức tổng các phần tử của a nằm trong khoảng chỉ số từ min(i,j)+1 đến max(i,j). Khi i=j tổng này rỗng và bằng 0.

Tiếp theo, định nghĩa

f(i,j)=(i−j)2+g(i,j)2

Hãy tìm giá trị nhỏ nhất của f(i,j) trên mọi cặp chỉ số i≠j.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n.
  • Dòng thứ hai chứa n số nguyên a[1],a[2],…,a[n].

Dữ liệu ra

Một số nguyên duy nhất là giá trị mini≠jf(i,j).

Ràng buộc

  • 2≤n≤100000
  • −104≤a[i]≤104

Ví dụ

Input Output Giải thích
4
1 0 0 -1
1 Chọn i=2,j=3: g(2,3)=a[3]=0, nên f=(2−3)2+02=1. Không cặp nào cho giá trị nhỏ hơn vì i≠j luôn khiến (i−j)2≥1.
2
1 -1
2 Chỉ có một cặp: i=1,j=2 với g(1,2)=a[2]=−1, nên f=(1−2)2+(−1)2=2.
5
10 11 12 13 -40
32 Giá trị tốt nhất đến từ cặp ở xa nhau: i=1,j=5 có g(1,5)=11+12+13−40=−4, nên f=16+16=32. Mọi cặp chỉ số liền kề đều cho giá trị lớn hơn 100.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0