Dãy Lipschitz

Đề bài

Mô tả

Với một dãy số nguyên a[1..m], ta định nghĩa hằng số Lipschitz L(a) như sau:

  • Nếu m<2 thì L(a)=0.
  • Nếu m2 thì L(a) là số nguyên không âm nhỏ nhất sao cho |a[i]a[j]|L(a)·|ij| với mọi 1i,jm.

Cho một dãy h gồm n phần tử và q truy vấn dạng [l,r]. Với mỗi truy vấn, xét dãy con liên tiếp h[l],h[l+1],,h[r]; hãy tính tổng hằng số Lipschitz của tất cả các dãy con liên tiếp của dãy đó.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nq.
  • Dòng thứ hai chứa n số nguyên h[1],h[2],,h[n].
  • q dòng tiếp theo, mỗi dòng chứa hai số nguyên liri mô tả một truy vấn.

Dữ liệu ra

Với mỗi truy vấn, in ra một dòng chứa một số nguyên là tổng hằng số Lipschitz của tất cả các dãy con liên tiếp của h[li..ri].

Ràng buộc

  • 2n105
  • 1q100
  • 0h[i]108
  • 1li<rin

Ví dụ

Input Output Giải thích
10 4
1 5 2 9 1 3 4 2 1 7
2 4
3 8
7 10
1 9
17
82
23
210
Với truy vấn đầu [2,4], dãy con là [5,2,9]. Các dãy con liên tiếp độ dài 2[5,2] (Lipschitz 3), [2,9] (Lipschitz 7), [5,2,9] (Lipschitz 7). Tổng =3+7+7=17.
7 6
5 7 7 4 6 6 2
1 2
2 3
2 6
1 7
4 7
3 5
2
0
22
59
16
8
Truy vấn [2,3] ứng với dãy [7,7]: dãy con duy nhất độ dài 2 có hằng số Lipschitz bằng 0.

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