Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

为什么错?。。。望前辈来指导指导

Posted by cmonkey at 2008-07-24 15:24:48 on Problem 3468
//哈哈 ~pascal的~老不对。。样例都过不了。。。。。。。
var sum:array[0..200000] of longint;
    mark:array[0..200000] of longint;
    e:array[0..100001] of longint;
    n,q,a,b,c,l:longint;

procedure init;                             //读入
var i:integer;
    c:char;
begin
 readln(n,q);
 fillchar(e,sizeof(e),0);
 fillchar(mark,sizeof(mark),0);
 for i:=0 to n-1 do read(e[i]);
 readln;
 l:=1;
 while l<n do l:=l*2;                      //构造线段树,数组存的
 for i:=0 to n-1 do sum[l+i]:=e[i];
 for i:=l-1 downto 1 do sum[i]:=sum[i*2]+sum[i*2+1];
end;

function query(id,left,right:longint):longint;    //求解
var p,z1,z2:longint;
begin
 if (left>b)or(right<a) then begin query:=0;exit;end;

 if (a<=left)and(b>=right) then begin
	inc(sum[id],mark[id]);
	mark[id]:=0;
	query:=sum[id];
	if e[id]=0 then sum[id]:=0;
	exit;
 end;

 p:=(left+right)div 2;
 if mark[id]<>0 then begin
	inc(mark[id div 2],mark[id]);
	inc(mark[(id div 2)+1],mark[id]);
	mark[id]:=0;
 end;
 z1:=query(id*2,left,p);
 z2:=query((id*2)+1,p+1,right);
 query:=z1+z2;
 sum[id]:=sum[id*2]+sum[(id*2)+1];
end;

procedure add(id,left,right:longint);        //加标记
var p,k:longint;
begin
 if (a>right)or(b<left) then exit;
 if (a<=left)and(b>=right) then begin
       k:=id;
       while k<l+n-1 do begin
                inc(mark[id],2*c);
                k:=k*2;
       end;
 end;
 p:=(left+right)div 2;
 add(id div 2,left,p);
 add((id div 2)+1,p,left);
end;

procedure solve;
var ask:char;
    i:integer;
begin
 for i:=1 to q do begin
	read(ask);
	if ask='C' then begin
		readln(a,b,c);
		add(1,1,l);
	end else
	if ask='Q' then begin
		readln(a,b);
		writeln(query(1,1,l));
	end;
 end;
end;
begin
// assign(input,'3468.in');reset(input);
// assign(output,'3468.out');rewrite(output);
  init;
  solve;
// close(output);
// close(input);
end.

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator