#include #include inline int max(int a,int b) { return a>b?a:b; } inline int min(int a,int b) { return anext) if(mmin[cur->to]>min(mmin[x],price[cur->to])) mmin[cur->to]=min(mmin[x],price[cur->to]),que[tail++]=cur->to; } void getmax() { int head,tail,x; head=tail=0; que[tail++]=n; mmax[n]=price[n]; while(headnext) if(mmax[cur->to]to])) mmax[cur->to]=max(mmax[x],price[cur->to]),que[tail++]=cur->to; } int main() { scanf("%d%d",&n,&m); for(int i=1; i<=n; i++) scanf("%d",price+i); for(int i=0,x,y,z; i