結果
問題 | No.2261 Coffee |
ユーザー |
![]() |
提出日時 | 2023-04-15 17:33:57 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 447 ms / 2,000 ms |
コード長 | 869 bytes |
コンパイル時間 | 867 ms |
コンパイル使用メモリ | 64,896 KB |
実行使用メモリ | 19,968 KB |
最終ジャッジ日時 | 2024-10-11 03:14:45 |
合計ジャッジ時間 | 13,306 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 42 |
ソースコード
#include <iostream> #define int long long #define rep(i, n) for(i = 0; i < n; i++) using namespace std; int n; int a[100000][5]; int b[100000][1 << 4]; int maxB[1 << 4]; int minB[1 << 4]; signed main() { int i, j, k; int d = 5; cin >> n; rep(i, n) rep(j, d) cin >> a[i][j]; int INF = 1e+18; rep(i, (1 << (d - 1))) { maxB[i] = -INF; minB[i] = INF; } rep(i, n) { rep(j, (1 << (d - 1))) { //j次元目の座標 int val = a[i][0]; rep(k, d - 1) { if ((j >> k) % 2 == 1) val += a[i][k + 1]; else val -= a[i][k + 1]; } b[i][j] = val; maxB[j] = max(maxB[j], b[i][j]); minB[j] = min(minB[j], b[i][j]); } } rep(i, n) { int ans = 0; rep(j, (1 << (d - 1))) { int score1 = maxB[j] - b[i][j]; int score2 = b[i][j] - minB[j]; ans = max(ans, score1); ans = max(ans, score2); } cout << ans << endl; } return 0; }