我是用线段树;
不知对你们可否又能用
#include<cstdio>
#include<cstdlib>
#include<algorithm>
int f[500000],max[500000],min[500000],a[200001],ft[500000];
void make(int p,int x,int y)//建树
{if (x==y) {f[p]=0;max[p]=a[x];ft[p]=0;min[p]=a[x];return;}int t,mid=(x+y)/2;make(p*2,x,mid);make(p*2+1,mid+1,y);f[p]=f[p*2]>f[p*2+1]?f[p*2]:f[p*2+1];ft[p]=ft[p*2]>ft[p*2+1]?ft[p*2]:ft[p*2+1];min[p]=min[p*2]<min[p*2+1]?min[p*2]:min[p*2+1];max[p]=max[p*2]>max[p*2+1]?max[p*2]:ma......
阅读全文