Pagini recente » Cod sursa (job #644104) | Cod sursa (job #1410077) | Cod sursa (job #3226383) | Cod sursa (job #1827785) | Cod sursa (job #383097)
Cod sursa(job #383097)
01.program tribute_to_mars;
02.type vect=array[1..15000] of longint;
03.var f,g:text;
04. c:vect;
05. n,m,ad,i,poz,bit,x,a,b,sum1,sum2:longint;
06.begin
07.assign(f,'datorii.in'); reset(f);
08.assign(g,'datorii.out'); rewrite(g);
09.read(f,n,m);
10.for i:=1 to n do begin
11. read(f,ad);
12. poz:=i;
13. while poz<=n do begin
14. c[poz]:=c[poz]+ad;
15. bit:=(poz and (poz-1)) xor poz;
16. poz:=poz+bit;
17. end;
18. end;
19.for i:=1 to m do begin
20. read(f,x,a,b);
21. if x=1 then begin
22. sum1:=0;
23. poz:=b;
24. while poz>0 do begin
25. sum1:=sum1+c[poz];
26. bit:=(poz and (poz-1)) xor poz;
27. poz:=poz-bit;
28. end;
29. sum2:=0;
30. poz:=a-1;
31. while poz>0 do begin
32. sum2:=sum2+c[poz];
33. bit:=(poz and (poz-1)) xor poz;
34. poz:=poz-bit;
35. end;
36. writeln(g,sum1-sum2);
37. end
38. else begin
39.
40. ad:=-b;
41. poz:=a;
42. while poz<=n do begin
43. c[poz]:=c[poz]+ad;
44. bit:=(poz and (poz-1)) xor poz;
45. poz:=poz+bit;
46. end;
47. end;
48.
49. end;
50.close(f); close(g);
51.end.