标签:hdu 5192 building bl bc#34 1002
4 3 2 1 2 3 5 4 4 4 1 2 3 4
1 -1HintIn first case, LeLe move one block from third pile to first pile.
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#define INF 1010010101000
#define ll long long
using namespace std;
int n,m,h;
ll a[50020*3];
ll mmin(ll a,ll b) {
if(a>b)return b;
return a;
}
ll mmax(ll a,ll b) {
if(a<b)return b;
return a;
}
int main() {
while(cin>>n>>m>>h) {
ll sum=0;
for(int i=1; i<=m; i++)
a[i]=0;
for(int i=m+1; i<=m+n; i++) {
scanf("%I64d",&a[i]);
sum+=a[i];
}
for(int i=m+n+1; i<=n+m+m; i++)
a[i]=0;
ll ans=0;
if(sum<(ll)h*m)printf("-1\n");
else {
int first=1;
ll Min=INF;
ll ans1=0;
ll ans2=0;
for(int i=1; i<=m; i++) {
if(a[i]>h)
ans1+=a[i]-h;
else
ans2+=h-a[i];
}
ans=max(ans1,ans2);
Min=ans;
for(int i=m+1; i<=m+m+n; i++) {
if(a[first]>h)
ans1-=a[first]-h;
else
ans2-=h-a[first];
if(a[i]>h)
ans1+=a[i]-h;
else
ans2+=h-a[i];
first++;
ans=mmax(ans1,ans2);
Min=mmin(ans,Min);
}
cout<<Min<<endl;
}
}
}
BC#34 1002 hdu 5192 Building Blocks
标签:hdu 5192 building bl bc#34 1002
原文地址:http://blog.csdn.net/acm_baihuzi/article/details/44523117