//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(); } ; }