记录编号 |
443687 |
评测结果 |
AAAAAAAAAA |
题目名称 |
忠诚 |
最终得分 |
100 |
用户昵称 |
swttc |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.209 s |
提交时间 |
2017-08-31 20:22:21 |
内存使用 |
27.02 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int myread()
{
int f=1;
int x=0;
char c;
c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+(int)(c-'0');
return f*x;
}
int n,m,l,c[1000010],maxx[4000000],cnt;
int id[1000010],can[1000010];
void buildt(int l,int r,int o)
{
if(l==r)
{
maxx[o]=c[l];
return;
}
int mid=l+r>>1;
int ls=o<<1;
int rs=ls+1;
buildt(l,mid,ls);
buildt(mid+1,r,rs);
maxx[o]=min(maxx[ls],maxx[rs]);
return;
}
void change(int l,int r,int o,int p,int x)
{
if(l==r)
{
if(l==p)
{
maxx[o]=x;
}
return;
}
int mid=l+r>>1;
int ls=o<<1;
int rs=ls+1;
if(mid>=p)
{
change(l,mid,ls,p,x);
}
else
{
change(mid+1,r,rs,p,x);
}
maxx[o]=min(maxx[ls],maxx[rs]);
return;
}
int query(int l,int r,int o,int ll,int rr)
{
int maxn=1e9;
if(l>=ll&&r<=rr)
{
return maxx[o];
}
int mid=l+r>>1;
int ls=o<<1;
int rs=ls+1;
if(mid>=ll)
{
maxn=min(maxn,query(l,mid,ls,ll,rr));
}
if(mid<rr)
{
maxn=min(maxn,query(mid+1,r,rs,ll,rr));
}
return maxn;
}
int main()
{
freopen("faithful.in","r",stdin);
freopen("faithful.out","w",stdout);
n=myread();
m=myread();
//memset(maxx,-1,sizeof(maxx));
for(int i=1;i<=n;i++)
{
int a;
a=myread();
c[i]=a;
}
buildt(1,n,1);
for(int i=1;i<=m;i++)
{
int a=myread(),b=myread();
printf("%d\n",query(1,n,1,a,b));
}
return 0;
}