結果
問題 | No.550 夏休みの思い出(1) |
ユーザー | IL_msta |
提出日時 | 2017-07-29 01:02:38 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 3,995 bytes |
コンパイル時間 | 1,382 ms |
コンパイル使用メモリ | 106,988 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-11 05:35:27 |
合計ジャッジ時間 | 2,783 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,820 KB |
testcase_01 | AC | 2 ms
6,816 KB |
testcase_02 | AC | 2 ms
6,816 KB |
testcase_03 | AC | 2 ms
6,820 KB |
testcase_04 | AC | 2 ms
6,820 KB |
testcase_05 | AC | 2 ms
6,816 KB |
testcase_06 | AC | 2 ms
6,816 KB |
testcase_07 | AC | 2 ms
6,820 KB |
testcase_08 | AC | 2 ms
6,816 KB |
testcase_09 | AC | 2 ms
6,816 KB |
testcase_10 | AC | 2 ms
6,816 KB |
testcase_11 | AC | 2 ms
6,816 KB |
testcase_12 | AC | 2 ms
6,816 KB |
testcase_13 | AC | 2 ms
6,816 KB |
testcase_14 | AC | 2 ms
6,816 KB |
testcase_15 | AC | 2 ms
6,816 KB |
testcase_16 | AC | 2 ms
6,816 KB |
testcase_17 | AC | 2 ms
6,816 KB |
testcase_18 | AC | 2 ms
6,820 KB |
testcase_19 | AC | 2 ms
6,816 KB |
testcase_20 | AC | 2 ms
6,820 KB |
testcase_21 | AC | 2 ms
6,820 KB |
testcase_22 | AC | 2 ms
6,820 KB |
testcase_23 | AC | 2 ms
6,816 KB |
testcase_24 | AC | 2 ms
6,816 KB |
testcase_25 | AC | 2 ms
6,816 KB |
testcase_26 | AC | 2 ms
6,820 KB |
testcase_27 | AC | 2 ms
6,816 KB |
testcase_28 | AC | 2 ms
6,820 KB |
testcase_29 | AC | 2 ms
6,820 KB |
testcase_30 | AC | 2 ms
6,820 KB |
testcase_31 | AC | 2 ms
6,816 KB |
testcase_32 | AC | 2 ms
6,820 KB |
testcase_33 | AC | 2 ms
6,820 KB |
testcase_34 | AC | 2 ms
6,816 KB |
testcase_35 | AC | 2 ms
6,816 KB |
testcase_36 | AC | 2 ms
6,816 KB |
testcase_37 | AC | 2 ms
6,816 KB |
testcase_38 | AC | 2 ms
6,820 KB |
testcase_39 | AC | 2 ms
6,816 KB |
testcase_40 | AC | 2 ms
6,816 KB |
testcase_41 | AC | 2 ms
6,816 KB |
testcase_42 | AC | 2 ms
6,820 KB |
testcase_43 | AC | 2 ms
6,820 KB |
testcase_44 | AC | 2 ms
6,816 KB |
testcase_45 | AC | 2 ms
6,816 KB |
testcase_46 | AC | 2 ms
6,816 KB |
testcase_47 | AC | 2 ms
6,816 KB |
testcase_48 | AC | 2 ms
6,816 KB |
testcase_49 | AC | 2 ms
6,816 KB |
testcase_50 | AC | 2 ms
6,820 KB |
testcase_51 | AC | 2 ms
6,816 KB |
testcase_52 | AC | 2 ms
6,816 KB |
testcase_53 | AC | 2 ms
6,820 KB |
testcase_54 | AC | 2 ms
6,816 KB |
testcase_55 | AC | 2 ms
6,816 KB |
testcase_56 | AC | 1 ms
6,816 KB |
testcase_57 | AC | 2 ms
6,816 KB |
ソースコード
#pragma region include #include <iostream> #include <iomanip> #include <stdio.h> #include <sstream> #include <algorithm> #include <cmath> #include <complex> #include <string> #include <cstring> #include <vector> #include <tuple> #include <bitset> #include <queue> #include <complex> #include <set> #include <map> #include <stack> #include <list> #include <fstream> #include <random> //#include <time.h> #include <ctime> #pragma endregion //#include ///////// #define REP(i, x, n) for(int i = x; i < n; ++i) #define rep(i,n) REP(i,0,n) #define ALL(X) X.begin(), X.end() ///////// #pragma region typedef typedef long long LL; typedef long double LD; typedef unsigned long long ULL; typedef std::pair<LL,LL> PLL;// typedef std::pair<int,int> PII;// #pragma endregion //typedef ////定数 const int INF = (int)1e9; const LL MOD = (LL)1e9+7; const LL LINF = (LL)1e18+20; const double PI = acos(-1.0); const double EPS = 1e-9; ///////// using namespace::std; LD A,B,C,D; LD X1(){ LD a = (-27*A*A*D+9*A*B*C-2*B*B*B); LD b = 4*(3*A*C-B*B); b = b*b*b; a = a*a + b; a = sqrt(a); a -= 27*A*A*D+9*A*B*C-2*B*B*B; a = pow(a,(LD)1/3); LD a_ = (LD)3.0*pow(2,(LD)1/3) * A; a = a/a_; LD a2 = pow(2,(LD)1/3) * (3*A*C-B*B); LD a2_ = 3*A * a; a2 = a2 / a2_; LD ans = a + a2 - B/(3*A); return ans; } LD X2(){ LD ans = 0; //i return ans; } pair<LD,LD> niji(LD A,LD B,LD C){ pair<LD,LD> ans; LD D = sqrt( B*B-4*A*C ); ans.first = (-B+D)/((LD)2*A); ans.second = (-B-D)/((LD)2*A); if( ans.first > ans.second ){ swap(ans.first, ans.second); } return ans; } LD f(LD X){ return ((X*A + B)*X + C )*X+D; } LD ff(LD X){ return (LD)3.0*A*X*X+(LD)2.0*B*X+C; } void solve(){ A = 1; cin >> B >> C >> D; if( B== 0 && C == 0 && D == 0 ){ cout << "0 0 0" << endl; } /* 解と係数の関係 α+β+γ = -B/A αβ+βγ+γα = C/A αβγ= -D/A A = 1; α+β+γ = -B αβ+βγ+γα = C αβγ= -D */ pair<LD,LD> kabe; kabe = niji(3*A, 2*B,C); if( kabe.first < 0 ){ kabe.first -= EPS; }else{ kabe.first += EPS; } if( kabe.second < 0){ kabe.second -= EPS; }else{ kabe.second += EPS; } vector<LL> ans(3); LL L,R; L = -LINF; R = floor( kabe.first ); LL mid; int NNN = 10000; bool flag = true; LD temp_ = ff(R); LD temp = f(R); { LD tempL = f(L); LD tempR = f(R); if( tempL > tempR ){ flag = false; } } while(NNN--){ mid = (L+R)/2; LD res = f(mid); if( res > (LD)0.0 ){ if( flag ){ R = mid; }else{ L = mid; } }else{ if( flag ){ L = mid; }else{ R = mid; } } } if( f(R) == 0 ){ ans[0] = R; }else{ ans[0] = L; } ///// L = floor(kabe.first); if( L <= ans[0] ){ L = ans[0] + 1; } R = floor( kabe.second ); { LD tempL = f(L); LD tempR = f(R); if( tempL > tempR ){ flag = false; } } NNN = 10000; while(NNN--){ mid = (L+R)/2; if( f(mid) > 0 ){ if( flag ){ R = mid; }else{ L = mid; } }else{ if( flag ){ L = mid; }else{ R = mid; } } } if( f(R) == 0 ){ ans[1] = R; }else{ ans[1] = L; } /// NNN = 10000; L = floor(kabe.second); if( L <= ans[1] ){ L = ans[1]+1; } R = LINF; flag = true; { LD tempL = f(L); LD tempR = f(R); if( tempL > tempR ){ flag = false; } } while(NNN--){ mid = (L+R)/2; if( f(mid) > 0 ){ if( flag ){ R = mid; }else{ L = mid; } }else{ if( flag ){ L = mid; }else{ R = mid; } } } if( f(L) == 0 ){ ans[2] = L; }else{ ans[2] = R; } sort( ALL(ans) ); if( ans[0] == -LINF || ans[1] == LINF ){ for(int i=0;i<3;++i){ if(i) cout << " "; cout << ans[1]; } cout << endl; return; } for(int i=0;i<3;++i){ if(i) cout << " "; cout << ans[i]; } cout << endl; } #pragma region main signed main(void){ std::cin.tie(0); std::ios::sync_with_stdio(false); std::cout << std::fixed;//小数を10進数表示 cout << setprecision(16);//小数点以下の桁数を指定//coutとcerrで別 solve(); } #pragma endregion //main()