結果
| 問題 |
No.2567 A_1 > A_2 > ... > A_N
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-12-02 16:55:11 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,154 bytes |
| コンパイル時間 | 2,123 ms |
| コンパイル使用メモリ | 196,096 KB |
| 最終ジャッジ日時 | 2025-02-18 05:45:12 |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 1 WA * 15 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int N;
long long X;
cin >> N >> X;
if (N == 1) {
cout << X << endl;
continue;
}
long long l = N - 1, r = X;
long long mn = X;
while (l <= r) {
long long mid = l + (r - l) / 2;
if (mid / 2 > X / (mid + 1)) {
r = mid - 1;
continue;
}
long long sum = 0;
long long a = mid;
for (int i = 0; i < N - 1; i++) {
sum += a;
a--;
}
if (X - sum > mid) {
l = mid + 1;
mn = min(mid, mn);
} else {
r = mid - 1;
}
}
if (mn == X) {
cout << -1 << endl;
} else {
long long sum = 0;
vector<long long> ans(N);
for (int i = 1; i < N; i++) {
ans[i] = mn;
sum += mn;
mn--;
}
ans[0] = X - sum;
for (int i = 0; i < N; i++) {
cout << ans[i] << " \n"[i == N - 1];
}
}
}
return 0;
}
// A1 wo dekirudake tiisaku suru
// A2 wo dekirudake ookiku sureba
// m * x <= inf
// iku junban
// 1 -> N - 1 -> N -> 1
// 1 -> N -> N - 1 -> 1