本网页所有文字内容由 imapbox邮箱云存储,邮箱网盘, iurlBox网页地址收藏管理器 下载并得到。
ImapBox 邮箱网盘 工具地址: https://www.imapbox.com/download/ImapBox.5.5.1_Build20141205_CHS_Bit32.exe
PC6下载站地址:PC6下载站分流下载
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox 网页视频 工具地址: https://www.imapbox.com/download/ImovieBox4.7.0_Build20141115_CHS.exe
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
Each case output two lines.The first line is each meet’s min handsome value, the second line is each meet’s max handsome value.
8 3 5 3 2 1 1 10 2 3
2 1 1 1 1 2 5 3 2 10 10 10
虽然正解是单调队列,可是我用的是两个栈实现的队列水过的,存下代码
/************************************************************************* > File Name: Euler.cpp > Author: acvcla > QQ: > Mail: acvcla@gmail.com > Created Time: 2014年10月30日 星期四 11时19分11秒 ************************************************************************/ #include<iostream> #include<cstring> #include<cstdio> using namespace std; const int maxn=1e5+5; int stack1[maxn],stack2[maxn],max2[maxn],max1,min2[maxn],min1; int top1,top2; void init(){ top1=top2=0; max1=max2[top2]=0; min1=min2[top2]=maxn; } int ans1[maxn],ans2[maxn]; void deque(){ if(top2>0){ stack2[--top2]; return ; } while(top1>0){ stack2[top2]=stack1[--top1]; max2[top2]=max(top2>0?max2[top2-1]:0,stack2[top2]); min2[top2]=min(top2>0?min2[top2-1]:maxn,stack2[top2]); top2++; } max1=0; min1=maxn; --top2; } int get_max_min(int x){ if(x)return max(max1,top2>0?max2[top2-1]:0); return min(min1,top2>0?min2[top2-1]:maxn); } void push(int x){ max1=max(x,max1); min1=min(x,min1); stack1[top1++]=x; } int main() { int n,k,x; while(~scanf("%d%d",&n,&k)){ init(); int t=0,cnt=0; for(int i=1;i<=n;i++){ scanf("%d",&x); push(x); ++cnt; if(cnt==k) { ans1[t]=get_max_min(0); //cout<<"sldl"<<endl; ans2[t++]=get_max_min(1); deque(); cnt--; } } for(int i=0;i<t;i++)printf("%d%c",ans1[i],i==t-1?'/n':' '); for(int i=0;i<t;i++)printf("%d%c",ans2[i],i==t-1?'/n':' '); } return 0; }
阅读和此文章类似的: 程序员专区