AcWing 5132. 奶牛照相
原题链接
中等
作者:
明月逍遥
,
2023-08-06 09:13:20
,
所有人可见
,
阅读 94
可以保存第一高和第二高,如果第一高不在里面就用第二高,否则用第一高
#include <iostream>
using namespace std;
const int N = 200010;
int w[N], h[N], p[N];
int main()
{
int sum = 0;
int max1 = 0, max2 = 0, dir = -1; // 保存第一高和第二高
int n;
cin >> n;
for (int i = 0; i < n; i ++ )
{
scanf("%d%d", &w[i], &h[i]);
sum += w[i];
if (max1 < h[i])
{
max1 = h[i];
dir = i;
}
}
for (int i = 0; i < n; i ++ )
if (max2 < h[i] && i != dir)
max2 = h[i];
int height;
for (int i = 0; i < n; i ++ )
{
if (h[i] == max1) height = max2;
else height = max1;
printf("%d ", (sum - w[i]) * height);
}
return 0;
}