結果
| 問題 |
No.2261 Coffee
|
| コンテスト | |
| ユーザー |
startcpp
|
| 提出日時 | 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;
}
startcpp