描述

其实你们都不知道,小B是很小气的。一天小B带着他的弟弟小B'一起去摘果子,走着走着,他们忽然发现了一颗长满了果子的树。由于弟弟长得太矮了,弟弟只有让哥哥小B帮他摘一些果子下来。哥哥小B说:"弟弟啊,不是我不想给你摘多,我只是一次拿不了那么多,昨天晚上又没睡好,只能上一次树。所以哥哥只能给你摘一个哈。"没办法,弟弟只有答应了这个要求。
于是几下小B就上了树,树上的果子还真多,有N个呢!!但是小B很快发现这些果子大小不一。抠门的小B就想给自己拿个最大的,给弟弟拿个最小的果子。但是由于树上有些果子太高,小B不一定可以够着,所以他给你选了P个可以够着的果子区间,让你在这些区间里面找一个最大的果子和一个最小的果子。

输入格式

共p+2行,
  第一行为n和p,
  第二行为区间[1,n]的果子大小(用正整数表示)
  后面p行形如a b,意为每次询问的区间的左界和右界

输出格式

共p行,第i行为第i次询问时得到的最大值以及最小值(一个询问用空格空开max和min)

【注意】在输入数据中果子的大小是无序的。

测试样例1

输入

5 2 
1 3 2 4 5 
1 4 
2 5

输出

4 1 
5 2

备注

【数据范围】
  保证果子大小不超过maxlongint
  40%的数据:1<=n,p<=1,000
  100%的数据:1<=n<=50,000
               1<=p<=20,000

刷水了……裸的线段树维护最大最小值

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
#include<set>
#include<map>
#include<ctime>
#define LL long long
#define inf 0x7ffffff
#define pa pair<int,int>
#define pi 3.1415926535897932384626433832795028841971
using namespace std;
inline LL read()
{
LL x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
struct segtree{
int l,r,mn,mx;
}tree[300000];
int n,m;
int a[50010];
inline void update(int k)
{
tree[k].mx=max(tree[k<<1].mx,tree[k<<1|1].mx);
tree[k].mn=min(tree[k<<1].mn,tree[k<<1|1].mn);
}
inline void buildtree(int k,int l,int r)
{
tree[k].l=l;tree[k].r=r;
if (l==r)
{
tree[k].mx=tree[k].mn=a[l];
return;
}
int mid=(l+r)>>1;
buildtree(k<<1,l,mid);
buildtree(k<<1|1,mid+1,r);
update(k);
}
inline int query(int k,int l,int r,int opr)
{
int x=tree[k].l,y=tree[k].r;
if (x==l&&y==r)
{
if (opr==1)return tree[k].mx;
if (opr==2)return tree[k].mn;
}
int mid=(x+y)>>1;
if (r<=mid)return query(k<<1,l,r,opr);
if (l>mid)return query(k<<1|1,l,r,opr);
if (opr==1)return max(query(k<<1,l,mid,opr),query(k<<1|1,mid+1,r,opr));
if (opr==2)return min(query(k<<1,l,mid,opr),query(k<<1|1,mid+1,r,opr));
}
int main()
{
n=read();m=read();
for(int i=1;i<=n;i++)a[i]=read();
buildtree(1,1,n);
for (int i=1;i<=m;i++)
{
int x=read(),y=read();
printf("%d %d\n",query(1,x,y,1),query(1,x,y,2));
}
return 0;
}

  

tyvj1297 小气的小B的更多相关文章

  1. 用MVC5+EF6+WebApi 做一个小功能(三) 项目搭建

    一般一个项目开始之前都会有启动会,需求交底等等,其中会有一个环节,大讲特讲项目的意义,然后取一个高大上的项目名字,咱这是一个小功能谈不上项目,但是名字不能太小气了.好吧,就叫Trump吧.没有任何含义 ...

  2. [置顶] Android 状态栏那些小坑?

    背景:因为之前老板上次问我我们的app能不能自定义上面的状态栏我说可以啊!当时没管,今天试了下果然很多坑,之前github上也有很多大佬写了一个开源库有兴趣的可以点进去看下支持DrawLayout沉侵 ...

  3. 【小程序分享篇 二 】web在线踢人小程序,维持用户只能在一个台电脑持登录状态

    最近离职了, 突然记起来还一个小功能没做, 想想也挺简单,留下代码和思路给同事做个参考. 换工作心里挺忐忑, 对未来也充满了憧憬与担忧.(虽然已是老人, 换了N次工作了,但每次心里都和忐忑). 写写代 ...

  4. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  5. jQuery实践-网页版2048小游戏

    ▓▓▓▓▓▓ 大致介绍 看了一个实现网页版2048小游戏的视频,觉得能做出自己以前喜欢玩的小游戏很有意思便自己动手试了试,真正的验证了这句话-不要以为你以为的就是你以为的,看视频时觉得看懂了,会写了, ...

  6. 微信小程序开发心得

    微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ...

  7. 前端网络、JavaScript优化以及开发小技巧

    一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...

  8. 微信应用号(小程序)开发IDE配置(第一篇)

    2016年9月22日凌晨,微信宣布“小程序”问世,当然只是开始内测了,微信公众平台对200个服务号发送了小程序内测邀请.那么什么是“小程序”呢,来看微信之父怎么说 看完之后,相信大家大概都有些明白了吧 ...

  9. Chrome出了个小bug:论如何在Chrome下劫持原生只读对象

    Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...

随机推荐

  1. 戴着镣铐起舞——从logo设计说起

    一天中午走在路上,顺道去看了学校新媒体艺术与设计系的学生优秀作品展.看到一个logo设计时引发了我很大的兴趣,觉得设计的非常清新活泼,不过并没有拍下来,在这里不能贴图.但是logo设计大家应该都有所概 ...

  2. 解决Jenkins上git出现的“ERROR: Error fetching remote repo 'origin'”问题

    今天对清掉了Jenkins中项目的工作空间,结果构建出现“ERROR: Error fetching remote repo 'origin'”问题:网上各种找也没找到解决这个问题的方法. 后来看错误 ...

  3. IEEE论文格式要求

    0.特别提示:本次会议要求各位作者根据审稿意见进行认真修改,然后经过大会主席的检查合格才允许上传IEEE eXpress,主要的目的是为了保证论文集的质量,不让论文格式出现五花八门的情况,确保会议后被 ...

  4. python3-day6(模块)

    一.OS模块 1.os.system('ls -l') #子shell运行,获取返回值,不是结果. 2.os.popen('ls -l').read() #获取结果. 二.sys模块 1.sys.ar ...

  5. 算法导论——lec 11 动态规划及应用

    和分治法一样,动态规划也是通过组合子问题的解而解决整个问题的.分治法是指将问题划分为一个一个独立的子问题,递归地求解各个子问题然后合并子问题的解而得到原问题的解.与此不同,动态规划适用于子问题不是相互 ...

  6. ngui点击与场景点击判断

    注:NGUI 组件上加上 BoxCollider 并设置区域大小 public void OnMouseDown()    { if (UICamera.hoveredObject == null) ...

  7. Builder模式 初体验

        看来Java构造器模式,决定动手体验下.构造器模式是什么?干什么用的?推荐大家看下ITEYE的一篇文章     http://www.iteye.com/topic/71175     了解构 ...

  8. javaweb中去除某个get方式的参数,并且返回路径

    String requestURL = request.getRequestURL() + ""; // String queryString = request.getQuery ...

  9. windows消息常量值

    WM_NULL = 0WM_CREATE = 1应用程序创建一个窗口WM_DESTROY = 2一个窗口被销毁WM_MOVE = 3移动一个窗口WM_SIZE = 5改变一个窗口的大小WM_ACTIV ...

  10. 《第一行代码》学习笔记28-内容提供器Content Provider(1)

    1.内容提供器:用于在不同的应用程序之间实现数据共享的功能,提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问 数据的安全性.使用内容提供器是Android实现跨程序共享数据 ...