Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

QMAX - Giá trị lớn nhất

Hiện tại, bài tập này đã có trên online judge chính thức của VNOI, bạn có thể truy cập ở đây: https://oj.vnoi.info/problem/qmax


Cho một dãy gồm n phần tử có giá trị ban đầu bằng 0.

Cho m phép biến đổi, mỗi phép có dạng (u, v, k): tăng mỗi phần tử từ vị trí u đến vị trí v lên k đơn vị.

Cho q câu hỏi, mỗi câu có dạng (u, v): cho biết phần tử có giá trị lớn nhất thuộc đoạn [u, v]

Giới hạn

  • n, m, q <= 50000
  • k > 0
  • Giá trị của một phần tử luôn không vượt quá 231-1

Input

  • Dòng 1: n, m
  • m dòng tiếp theo, mỗi dòng chứa u, v, k cho biết một phép biến đổi
  • Dòng thứ m+2: p
  • p dòng tiếp theo, mỗi dòng chứa u, v cho biết một phép biến đổi

Output

  • Gồm p dòng chứa kết quả tương ứng cho từng câu hỏi.

Example

Input:
6 2
1 3 2
4 6 3
1
3 4
Output:
3

Được gửi lên bởi:Nguyen Dinh Tu
Ngày:2006-11-16
Thời gian chạy:1s
Giới hạn mã nguồn:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Ngôn ngữ cho phép:Tất cả ngoại trừ: ERL GOSU JS-RHINO NODEJS PERL6 PYPY RUST SED VB.NET

hide comments
2016-11-09 10:47:32
ac

Last edit: 2016-11-23 03:38:47
2016-11-01 10:01:58
uses math;
const fi='';
fo='';
maxn=100000;
oo =2*trunc(1e10);
var a :array[0..maxn] of int64;
i,j,n,p,q,m :longint;
t :array[1..4*maxn] of int64;
res :int64;
procedure enter;
var u,v,k :longint;
begin
readln(n,m);
for i:=1 to m do
begin
read(u,v,k);
a[u] := a[u]+ k;
a[v+1] := a[v+1] -k;
end;
for i:=1 to n do
a[i] := a[i-1] +a[i];
end;
procedure update(k,l,r:longint);
var m :longint;
begin
if l=r then
begin
t[k] := a[l];
exit;
end;
m := (l+r) div 2;
update(k*2,l,m);
update(k*2+1,m+1,r);
t[k] := max(t[k*2],t[k*2+1]);
end;
procedure find(k,l,r,i,j:longint);
var m :longint;
begin
if (i>r) or (j<l) then exit;
if (i<=l) and (r<=j) then
begin
res := max(t[k],res);
exit;
end;
m := (l+r) div 2;
find(k*2,l,m,i,j);
find(k*2+1,m+1,r,i,j);
end;
procedure process;
begin
update(1,1,n);
end;
procedure print;
var u,v :longint;
i :longint;
begin
read(q);
for i:=1 to q do
begin
read(u,v);
res := -oo;
find(1,1,n,u,v);
writeln(res);
end;
end;
begin
assign(input,fi);reset(input);
assign(output,fo);rewrite(output);
enter;
process;
print;
close(input);close(output);
end.

2016-10-25 12:12:39 xin đừng quên tôi
THAM KHẢO THUẬT TOÁN VÀ CODE TẠI: http://yeulaptrinh.pw/398/qmax-spoj/
2016-10-19 16:51:54
bài nào ghi ra nhiều kết quả như này, tui toàn ghi write thay vì writeln không ak, nên sai :v
bốn lần rồi vẫn chưa chừa, có bạn nào như tui hơm?
2016-10-01 16:46:35
rmq chạy sinh lỗi :: it AC
2016-09-24 10:21:34
bài nào cũng có thanh niên AC
2016-09-19 14:07:00
RMQ AC :3
2016-04-13 15:23:45
RMQ hình khá nhanh hơn IT nhĩ @@@
2016-03-08 05:25:14
code trâu AC được thì tài
2016-02-12 07:59:35 Nguyễn Thành Nhân
duyệt trâu đặt cận nhé
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.