lightoj1082 线段树

时间:2022-07-04 03:22:22
 //Accepted    5596 KB    396 ms
 //线段树求区间最小值
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 #include <queue>
 #include <cmath>
 #include <algorithm>
 using namespace std;
 /**
   * This is a documentation comment block
   * 如果有一天你坚持不下去了,就想想你为什么走到这儿!
   * @authr songt
   */
 ;
 int n;
 int a[imax_n];
 struct node
 {
     int l,r;
     int tmin;
 }f[imax_n*];
 int min(int a,int b)
 {
     return a<b?a:b;
 }
 void build(int t,int l,int r)
 {
     f[t].l=l;
     f[t].r=r;
     if (l==r)
     {
         f[t].tmin=a[l];
         return ;
     }
     ;
     build(*t,l,mid);
     build(*t+,mid+,r);
     f[t].tmin=min(f[*t].tmin,f[*t+].tmin);
 }
 int query(int t,int l,int r)
 {
     if (f[t].l==l && f[t].r==r)
     {
         return f[t].tmin;
     }
     ;
     *t,l,r);
     else
     {
         *t+,l,r);
         else
         *t,l,mid),query(*t+,mid+,r));
     }
 }
 int Q;
 int x,y;
 void slove()
 {
     build(,,n);
     ;i<Q;i++)
     {
         scanf("%d%d",&x,&y);
         printf(,x,y));
     }
 }
 int main()
 {
     int T;
     scanf("%d",&T);
     ;t<=T;t++)
     {
         scanf("%d%d",&n,&Q);
         ;i<=n;i++)
         scanf("%d",&a[i]);
         printf("Case %d:\n",t);
         slove();
     }
     ;
 }