update segtree done
This commit is contained in:
parent
67559577b7
commit
e3ca9c7a0d
6
day7/SegmentTree/2.in
Normal file
6
day7/SegmentTree/2.in
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
5
|
||||||
|
10 11 12 13 14
|
||||||
|
3
|
||||||
|
1 5
|
||||||
|
5 5
|
||||||
|
4 5
|
3
day7/SegmentTree/2.out
Normal file
3
day7/SegmentTree/2.out
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
60
|
||||||
|
14
|
||||||
|
27
|
@ -0,0 +1,69 @@
|
|||||||
|
#include<bits/stdc++.h>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
#define AS(c){if(!(c)){cerr<<"assert failed: "<<#c<<endl;return -1;}}
|
||||||
|
|
||||||
|
void build(int t[],int a[],int s,int e,int n){
|
||||||
|
if(s==e){
|
||||||
|
t[n]=a[s];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int m=s+((e-s)>>1);
|
||||||
|
build(t,a,s,m,n*2);
|
||||||
|
build(t,a,m+1,e,n*2+1);
|
||||||
|
t[n]=t[n*2]+t[n*2+1];
|
||||||
|
}
|
||||||
|
|
||||||
|
int search(int t[],int s,int e,int n,int l,int r){
|
||||||
|
if(l<=s&&e<=r){
|
||||||
|
return t[n];
|
||||||
|
}
|
||||||
|
if(e<l||r<s){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int m = s+((e-s)>>1);
|
||||||
|
return search(t, s, m, n*2,l, r)+search(t, m+1, e, n*2+1, l, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef OITEST
|
||||||
|
#endif
|
||||||
|
#ifndef OITEST
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int main(int argc,char *argv[]){
|
||||||
|
#ifdef OITEST
|
||||||
|
AS(argc==3)
|
||||||
|
ifstream ifile(argv[1]);
|
||||||
|
ifstream afile(argv[2]);
|
||||||
|
AS(ifile.is_open()==true);
|
||||||
|
AS(afile.is_open()==true);
|
||||||
|
stringstream ss;
|
||||||
|
#define cout ss
|
||||||
|
#define cin ifile
|
||||||
|
#endif
|
||||||
|
#ifndef OITEST
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int n;
|
||||||
|
cin>>n;
|
||||||
|
int k=n*4+1;
|
||||||
|
int t[k];
|
||||||
|
int arr[n+1];
|
||||||
|
for(int i=1;i<=n;i++){
|
||||||
|
cin>>arr[i];
|
||||||
|
}
|
||||||
|
build(t, arr, 1, n, 1);
|
||||||
|
int m;
|
||||||
|
cin>>m;
|
||||||
|
for(int i=1;i<=m;i++){
|
||||||
|
int l,r;
|
||||||
|
cin>>l>>r;
|
||||||
|
cout<<search(t, 1, n, 1, l, r)<<endl;
|
||||||
|
#ifdef OITEST
|
||||||
|
int myans,cans;
|
||||||
|
ss>>myans;
|
||||||
|
afile>>cans;
|
||||||
|
AS(myans==cans)
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
@ -59,7 +59,7 @@ target("P5431")
|
|||||||
target("segtree")
|
target("segtree")
|
||||||
set_rundir("./day7/SegmentTree")
|
set_rundir("./day7/SegmentTree")
|
||||||
add_files("./day7/SegmentTree/*.cpp")
|
add_files("./day7/SegmentTree/*.cpp")
|
||||||
for v=1,1 do
|
for v=1,2 do
|
||||||
local s=tostring(v)
|
local s=tostring(v)
|
||||||
add_tests(s,{files="./day7/SegmentTree/*.cpp",runargs={s..".in",s..".out"},defines="OITEST"})
|
add_tests(s,{files="./day7/SegmentTree/*.cpp",runargs={s..".in",s..".out"},defines="OITEST"})
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user