bzoj2620[Usaco2012 Mar]Haybale Restacking

来源:互联网 发布:精品电玩手游刷分软件 编辑:程序博客网 时间:2024/05/22 12:07

求出差的前缀和以后,用前缀和一个个减去前缀和的中位数。
和糖果传递原理相同。

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)#define inf 0xc3c3c3c3using namespace std;const int N=1e5+5;const int mo=1e9+7;typedef long long ll;int n,m;int a[N],b[N];int main(){    scanf("%d",&n);    ll ans=0;    m=(n+1)>>1;    fo(i,1,n)    {        int x,y;        scanf("%d%d",&a[i],&b[i]);        a[i]-=b[i];    }    b[1]=0;    fo(i,2,n)b[i]=a[i-1]+b[i-1];    b[1]=a[n]+b[n];    sort(b+1,b+n+1);    fo(i,1,n)    ans+=abs(b[m]-b[i]);    printf("%lld\n",ans);}
原创粉丝点击