Ural 1126. Magnetic Storms

来源:互联网 发布:淘宝怎么搜卖家id 编辑:程序博客网 时间:2024/05/21 18:40

PRO IS HERE


单调队列;

维护区间长最大m的一个单调递减队列。


CODE:

#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<set>#include<queue>#include<map>#include<sstream>#include<iostream>using namespace std;#define FOR(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)#define DOR(i,a,b) for(int (i)=(a);(i)>=(b);(i)--)#define bug puts("Fuck");#define LL long long#define pb push_back#define mp make_pair#define nMax 200010#define eps 1e-8#define inf 0x7fffffffint que[nMax],l,r,a[nMax];int n,m;int main(){#ifndef ONLINE_JUDGEfreopen("input.txt","r",stdin);//freopen("output.txt","w",stdout);#endifwhile(~scanf("%d",&m)){n=0;while(scanf("%d",&a[n]),a[n]!=-1) n++;l=r=0;que[r++]=0;for(int i=1;i<n;i++) {if(i-que[l] >= m) l++;while(a[que[r-1]]<a[i] && l<r) r--;que[r++]=i;if(i>=m-1) printf("%d\n",a[que[l]]);}}return 0;}


原创粉丝点击