栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3512 Financial Fraud

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3512 Financial Fraud

#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<algorithm>using namespace std;typedef long long LL;#define N 55555int n,array[N];int stk[N],top;int elnum[N],delnum[N];struct node{ int l,r,dis,val;}LTree[N];int merge(int rx, int ry){  if(rx == 0) return ry; if(ry == 0) return rx; if(LTree[rx].val < LTree[ry].val) swap(rx,ry); LTree[rx].r = merge(LTree[rx].r,ry); int l,r; l = LTree[rx].l; r = LTree[rx].r; if(LTree[l].dis < LTree[r].dis) swap(LTree[rx].l,LTree[rx].r); if(LTree[rx].r == 0) LTree[rx].dis = 0; else LTree[rx].dis = LTree[LTree[rx].r].dis + 1; return rx;}int pop(int x){ int l,r; l = LTree[x].l; r = LTree[x].r; LTree[x].l = LTree[x].r = LTree[x].dis = 0; return merge(l,r);}int main(){ int i,j,k; while(scanf("%d",&n),n){ for(i = 1; i <= n; i++) scanf("%d",&array[i]); for(i = 1; i <= n; i++){ LTree[i].val = array[i]; LTree[i].l = LTree[i].r = LTree[i].dis = 0; } top = 0; for(i = 1; i <= n; i++){ stk[++top] = i; elnum[top] = 1; delnum[top] = 0; while(top > 1 && LTree[stk[top]].val <= LTree[stk[top-1]].val){ elnum[top-1] += elnum[top]; delnum[top-1] += delnum[top]; stk[top-1] = merge(stk[top-1],stk[top]); --top; while(delnum[top]*2+2 < elnum[top]){ stk[top] = pop(stk[top]); delnum[top]++; } } } LL ans = 0; int left = 1,right; for(i = 1; i <= top; i++){ right = left+elnum[i]-1; int mid = LTree[stk[i]].val; for(j = left; j <= right; j++) ans = ans + abs(mid-array[j]); left = right+1; } printf("%lldn",ans); }}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370501.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号