题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4296
思路:题意就不说了啊,看懂题目中的一句话就好了,比赛时的,一个小思路,也没有绝对的验证过对或错,就是让每一个小方块放在最底下一层,算出其PDV,最小的一个PDV就是正解了。
代码:
#include<stdio.h>
__int64 ans;
__int64 sum;
int a[100005][2];
int main()
{
int i;
int n;
while(scanf("%d",&n)!=EOF)
{
sum = 0;
ans = 10000000000;
for(i=0;i<n;i++)
{
scanf("%d%d",&a[i][0],&a[i][1]);
sum += a[i][0];
}
for(i=0;i<n;i++)
{
if(sum-a[i][0]-a[i][1] < ans)
ans = sum-a[i][0] - a[i][1];
}
if(ans < 0)
printf("0\n");
else
printf("%I64d\n",ans);
}
return 0;
}