VK Cup 2015 - Qualification Round 1 B. Photo to Remember

来源:互联网 发布:塔罗牌软件哪个好 编辑:程序博客网 时间:2024/04/28 15:33

找一下h的最大值和次大值就行了。。。。

#include <iostream>#include <queue>#include <stack>#include <map>#include <set>#include <bitset>#include <cstdio>#include <algorithm>#include <cstring>#include <climits>#include <cstdlib>#include <cmath>#include <time.h>#define maxn 200005#define maxm 500005#define eps 1e-9#define mod 1000000007#define INF 0x3f3f3f3f#define PI (acos(-1.0))#define lowbit(x) (x&(-x))#define mp make_pair#define ls o<<1#define rs o<<1 | 1#define lson o<<1, L, mid #define rson o<<1 | 1, mid+1, R#define pii pair<int, int>#pragma comment(linker, "/STACK:16777216")typedef long long LL;typedef unsigned long long ULL;using namespace std;LL qpow(LL a, LL b){LL res=1,base=a;while(b){if(b%2)res=res*base;base=base*base;b/=2;}return res;}LL powmod(LL a, LL b){LL res=1,base=a;while(b){if(b%2)res=res*base%mod;base=base*base%mod;b/=2;}return res;}//headint w[maxn];int h[maxn];int n;void read(){scanf("%d", &n);for(int i = 1; i <= n; i++) scanf("%d%d", &w[i], &h[i]);}void work(){int mx1 = 0, mx2 = 0, ans1 = -1, ans2 = -1;mx1 = h[1], ans1 = 1;for(int i = 2; i <= n; i++) {if(h[i] >= mx1) mx2 = mx1, ans2 = ans1, mx1 = h[i], ans1 = i;else if(h[i] > mx2) mx2 = h[i], ans2 = i;}int res = 0;for(int i = 1; i <= n; i++) res += w[i];for(int i = 1; i <= n; i++) {if(i == ans1) printf("%d%c", (res - w[i]) * mx2, i == n ? '\n' : ' ');else printf("%d%c", (res - w[i]) * mx1, i == n ? '\n' : ' ');}}int main(){read();work();return 0;}


0 0
原创粉丝点击