APTX_4869 @ 2018-07-24 11:02:29
using namespace std; const int N=1000008 struct aa{ int p,v; }q1[N],q2[N]; int n,k,a[N],l=1,r,ll=1,rr; int ans1[N],ans2[N]; inline int read() { char c=getchar(); bool flag=1; int t=0; while((c>'9'||c<'0')&&c!='-') c=getchar(); if(c=='-') { flag=0; c=getchar(); } while(c>='0'&&c<='9') { t=t*10+c-'0'; c=getchar(); } return flag ? t : -t; } int main() { n=read();k=read(); for(int i=1;i<k;i++) { a[i]=read(); while(a[i]>=q1[r].v&&r>=l) r--; q1[++r].v=a[i]; q1[r].p=i; while(a[i]<=q2[rr].v&&rr>=ll) rr--; q2[++rr].v=a[i]; q2[rr].p=i; } for(int i=k;i<=n;i++) { a[i]=read(); while(a[i]>=q1[r].v&&r>=l) r--; q1[++r].v=a[i]; q[r].p=i; while(a[i]<=q2[rr].v&&rr>=ll) rr--; q2[++rr].v=a[i]; q2[rr].p=i; while(q1[l].p<i-k+1) l++; while(q1[ll].p<i-k+1) ll++; ans2[i-k+1]=q1[l].v; ans1[i-k+1]=q2[ll].v; } for(int i=1;i+k-1<=n;i++) printf("%d ",ans1[i]); printf("\n"); for(int i=1;i+k-1<=n;i++) printf("%d ",ans2[i]); printf("\n"); return 0; }
by ShineEternal_plus @ 2018-07-24 11:03:37
排版
by APTX_4869 @ 2018-07-24 11:07:21
@洛谷万岁666 我好像发现了
by C201914 @ 2018-07-24 12:54:14
include前面
by C201914 @ 2018-07-24 12:54:32
by soy_un_perro @ 2018-08-01 11:41:20
@APTX_4869 了解一下我的词:
西江月·OI选手在洛谷
CE别枝惊人(1),发誓苦学编程。
学了大概十几天,听取WA声一片。
五六年(2)学算法,两三月(3)刷千题。
再看评测记录时,只见AC一片。
注释:
(1)别枝:别在枝头上。指CE状态的评测记录在评测记录的最上方。
(2):指学习算法的时间跨度有五六年。
(3):指刷题时间加在一起有两三个月。