結果
問題 | No.550 夏休みの思い出(1) |
ユーザー |
|
提出日時 | 2017-07-28 23:40:18 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 4 ms / 2,000 ms |
コード長 | 967 bytes |
コンパイル時間 | 2,019 ms |
コンパイル使用メモリ | 173,348 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-11 05:32:41 |
合計ジャッジ時間 | 3,338 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 55 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { cin.tie(0); ios::sync_with_stdio(false); ll a, b, c; cin >> a >> b >> c; vector<ll> ans; ll c2 = abs(c); if (c != 0) { for (ll i = 0; i * i * i <= c2; i++) { if (i * i * i + a * i * i + b * i + c == 0) { ans.push_back(i); } if (-i * i * i + a * i * i - b * i + c == 0) { ans.push_back(-i); } } } else { ans.push_back(0); } if (ans.size() == 2) { ans.push_back(-c / (ans[0] * ans[1])); } else if (ans.size() == 1) { if (ans[0] != 0) { a += ans[0]; b = -c / ans[0]; } ll ng = (a <= 0 ? -a / 2 : -((a + 1) / 2)), ok = 1000000000; while (ok - ng > 1) { ll mid = (ok + ng) / 2; if (mid * mid + a * mid + b >= 0) ok = mid; else ng = mid; } ans.push_back(ok); ans.push_back(-a - ok); } sort(ans.begin(), ans.end()); cout << ans[0]; for (int i = 1; i < 3; i++) { cout << " " << ans[i]; } cout << endl; return 0; }