結果
| 問題 |
No.2844 Birthday Party Decoration
|
| コンテスト | |
| ユーザー |
AngrySadEight
|
| 提出日時 | 2024-07-04 19:57:53 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 10 ms / 2,000 ms |
| コード長 | 847 bytes |
| コンパイル時間 | 585 ms |
| コンパイル使用メモリ | 72,012 KB |
| 最終ジャッジ日時 | 2025-02-22 01:57:00 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 4 |
ソースコード
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
int main() {
ll T;
cin >> T;
while (T--) {
ll N, X;
cin >> N >> X;
vector<ll> c(N);
for (ll i = 0; i < N; i++) {
cin >> c[i];
}
ll ans = 0;
for (ll i = N - 1; i >= 0; i--) {
if (!((X >> c[i]) & 1)) {
ll bc = (1LL << c[i]);
ll floor = (X / bc) * bc; // 切り捨て
ll ceil = (X / bc + 1) * bc; // 切り上げ
if (floor == 0) {
ans = (ceil - X) * 2;
} else {
ll min_d = min((ceil - X) * 2, (X - (floor - 1)) * 2);
ans = min_d;
}
break;
}
}
cout << ans << endl;
}
}
AngrySadEight