diff --git a/day7/SegmentTree/2.in b/day7/SegmentTree/2.in new file mode 100644 index 0000000..67e6303 --- /dev/null +++ b/day7/SegmentTree/2.in @@ -0,0 +1,6 @@ +5 +10 11 12 13 14 +3 +1 5 +5 5 +4 5 \ No newline at end of file diff --git a/day7/SegmentTree/2.out b/day7/SegmentTree/2.out new file mode 100644 index 0000000..9eacc6f --- /dev/null +++ b/day7/SegmentTree/2.out @@ -0,0 +1,3 @@ +60 +14 +27 \ No newline at end of file diff --git a/day7/SegmentTree/SegmentTree.cpp b/day7/SegmentTree/SegmentTree.cpp index e69de29..67d273f 100644 --- a/day7/SegmentTree/SegmentTree.cpp +++ b/day7/SegmentTree/SegmentTree.cpp @@ -0,0 +1,69 @@ +#include +using namespace std; + +#define AS(c){if(!(c)){cerr<<"assert failed: "<<#c<>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>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<>myans; + afile>>cans; + AS(myans==cans) + #endif + } +} \ No newline at end of file diff --git a/xmake.lua b/xmake.lua index 7ac9152..70d8d2a 100644 --- a/xmake.lua +++ b/xmake.lua @@ -59,7 +59,7 @@ target("P5431") target("segtree") set_rundir("./day7/SegmentTree") add_files("./day7/SegmentTree/*.cpp") - for v=1,1 do + for v=1,2 do local s=tostring(v) add_tests(s,{files="./day7/SegmentTree/*.cpp",runargs={s..".in",s..".out"},defines="OITEST"}) end