結果
問題 | No.5018 Let's Make a Best-seller Book |
ユーザー | Pechi |
提出日時 | 2023-10-01 15:21:34 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 4,447 bytes |
コンパイル時間 | 3,464 ms |
コンパイル使用メモリ | 220,100 KB |
実行使用メモリ | 24,516 KB |
スコア | 0 |
平均クエリ数 | 52.00 |
最終ジャッジ日時 | 2023-10-01 15:21:46 |
合計ジャッジ時間 | 11,015 ms |
ジャッジサーバーID (参考情報) |
judge13 / judge15 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | WA | - |
testcase_01 | WA | - |
testcase_02 | WA | - |
testcase_03 | WA | - |
testcase_04 | WA | - |
testcase_05 | WA | - |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | WA | - |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | WA | - |
testcase_20 | WA | - |
testcase_21 | WA | - |
testcase_22 | WA | - |
testcase_23 | WA | - |
testcase_24 | WA | - |
testcase_25 | WA | - |
testcase_26 | WA | - |
testcase_27 | WA | - |
testcase_28 | WA | - |
testcase_29 | WA | - |
testcase_30 | WA | - |
testcase_31 | WA | - |
testcase_32 | WA | - |
testcase_33 | WA | - |
testcase_34 | WA | - |
testcase_35 | WA | - |
testcase_36 | WA | - |
testcase_37 | WA | - |
testcase_38 | WA | - |
testcase_39 | WA | - |
testcase_40 | WA | - |
testcase_41 | WA | - |
testcase_42 | WA | - |
testcase_43 | WA | - |
testcase_44 | WA | - |
testcase_45 | WA | - |
testcase_46 | WA | - |
testcase_47 | WA | - |
testcase_48 | WA | - |
testcase_49 | WA | - |
testcase_50 | WA | - |
testcase_51 | WA | - |
testcase_52 | WA | - |
testcase_53 | WA | - |
testcase_54 | WA | - |
testcase_55 | WA | - |
testcase_56 | WA | - |
testcase_57 | WA | - |
testcase_58 | WA | - |
testcase_59 | WA | - |
testcase_60 | WA | - |
testcase_61 | WA | - |
testcase_62 | WA | - |
testcase_63 | WA | - |
testcase_64 | WA | - |
testcase_65 | WA | - |
testcase_66 | WA | - |
testcase_67 | WA | - |
testcase_68 | WA | - |
testcase_69 | WA | - |
testcase_70 | WA | - |
testcase_71 | WA | - |
testcase_72 | WA | - |
testcase_73 | WA | - |
testcase_74 | WA | - |
testcase_75 | WA | - |
testcase_76 | WA | - |
testcase_77 | WA | - |
testcase_78 | WA | - |
testcase_79 | WA | - |
testcase_80 | WA | - |
testcase_81 | WA | - |
testcase_82 | WA | - |
testcase_83 | WA | - |
testcase_84 | WA | - |
testcase_85 | WA | - |
testcase_86 | WA | - |
testcase_87 | WA | - |
testcase_88 | WA | - |
testcase_89 | WA | - |
testcase_90 | WA | - |
testcase_91 | WA | - |
testcase_92 | WA | - |
testcase_93 | WA | - |
testcase_94 | WA | - |
testcase_95 | WA | - |
testcase_96 | WA | - |
testcase_97 | WA | - |
testcase_98 | WA | - |
testcase_99 | WA | - |
ソースコード
#define _USE_MATH_DEFINES //#define NDEBUG #pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include<bits/stdc++.h> #include<array> #include<unordered_map> #include<unordered_set> #include<random> #include<chrono> using namespace std; typedef long long int ll; typedef unsigned long long int ull; //#define SUBMIT #ifdef SUBMIT #define NO_DEBUG #endif // SUBMIT #define MAX(A,B) max(A,B) #define MIN(A,B) min(A,B) #define IN(X) for (int in = 0; in < X.size(); in++)cin >> X[in] #define OUT(X) for (int in = 0; in < X.size(); in++)cout << X[in]<<(in==X.size()-1?"\n":" ") #define SORT(X) sort(X.begin(), X.end()) #define ALL(X,Y) for (auto X = (Y).begin(); X != (Y).end(); ++X) #define FULL(a) (a).begin(),(a).end() #define BFS(Q,S) for(Q.push(S);Q.size()!=0;Q.pop()) int dx[] = { 1,0,-1,0,0,0 }; int dy[] = { 0,1,0,-1,0,0 }; int dz[] = { 0,0,0,0,1,-1 }; int t, n, m; chrono::system_clock::time_point starttime; using namespace std::chrono; #ifndef ONLINE_JUDGE #define DEBUG #endif inline float getTime() { #ifdef DEBUG return duration_cast<milliseconds>(system_clock::now() - starttime).count() * 2.0; #else return duration_cast<milliseconds>(system_clock::now() - starttime).count(); #endif } inline long long int xor128() { static long long int x = 123456789, y = 362436069, z = 521288629, w = 88675123; long long int t = (x ^ (x << 11)); x = y; y = z; z = w; return (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8))); } int p[10] = { 0 }, r[10] = { 0 }, l[10] = { 0 }, add = 0; double d[10], s[10], pl[10]; void make_plan(int now) { double sum = 0; static int mode = 0; if (mode == 0 && add >= 1000000)mode = 1; if (mode != 0 && add < 1000000)mode = 0; if (mode!=0) { if (mode == 1) { int cnt = m / 500; for (int i = 0; i < n; ++i) sum += (d[i] / max(1, now))*pow(1.05, p[i]); for (int i = 0; i < n; ++i)l[i] = cnt * (d[i] / max(1, now))*pow(1.05, p[i]) / sum; cout << "1 "; for (int i = 0; i < n; ++i) { cout << l[i] << " "; r[i] += l[i]; m -= l[i] * 500; } cout << endl; mode = 2; } else { int x = 1; while (500000 * pow(2, x - 1) <= add)++x; --x; if (x > 5)x = 5; cout << "2 " << x << endl; m -= 500000 * pow(2, x - 1); for (int i = 0; i < n; ++i)p[i] += x; mode = 1; } } else { int maxCnt = m / 500, cnt = 0; for (int i = 0; i < n; ++i) { pl[i] = (pow(d[i] / max(1, now), 2)*pow(5, 2 - 2 * p[i])*pow(21.0 / 4, 2 * p[i]) - 4 * r[i]) / 4.0; if (pl[i] < 0)pl[i] = 0; cnt += pl[i]; } if (cnt == 0 && m >= 500000) { int x = 1; while (500000 * pow(2, x-1) <= m)++x; --x; if (x > 5)x = 5; cout << "2 " << x << endl; m -= 500000 * pow(2, x-1); for (int i = 0; i < n; ++i)p[i] += x; } else { cout << "1 "; for (int i = 0; i < n; ++i)l[i] = pl[i]; while (cnt > maxCnt) { int id = xor128() % n; if (l[id] != 0)--l[id], --cnt; } for (int i = 0; i < n; ++i) { cout << l[i] << " "; r[i] += l[i]; m -= l[i] * 500; } } cout << endl; } } inline void solve() { cin >> t >> n >> m; for (int i = 0; i < n; ++i)d[i] = 1.0; for (int now = 0; now < t; ++now) { make_plan(now); cin >> add; m += add; for (int i = 0; i < n; ++i) { cin >> s[i]; s[i] /= sqrt(r[i])*pow(1.05, p[i]); if (now == 0)d[i] = 0; d[i] += s[i]; } for (int i = 0; i < n; ++i)cin >> p[i]; for (int i = 0; i < n; ++i)cin >> r[i]; } } inline void test() { int score = 0; cin >> t >> n; m = 2000000; double D[10], z[10]; for (int i = 0; i < n; ++i)d[i] = 1.0; for (int i = 0; i < n; ++i)cin >> D[i]; for (int now = 0; now < t; ++now) { make_plan(now); add = 0; cout << m << "\n=>"; for (int i = 0; i < n; ++i) { cin >> z[i]; s[i] = min((double)r[i], sqrt(r[i])*pow(1.05, p[i])*D[i] * z[i]); m += (int)s[i] * 1000; add += (int)s[i] * 1000; score += (int)s[i]; cout << (int)s[i] << " "; } cout << "\n:" << m << "\np:"; for (int i = 0; i < n; ++i) { if (s[i] < 0.1*r[i])--p[i]; if (s[i] >= 0.3*r[i])++p[i]; if (p[i] < -60)p[i] = -60; if (p[i] > 60)p[i] = 60; cout << p[i] << " "; s[i] /= sqrt(r[i])*pow(1.05, p[i]); if (now == 0)d[i] = 0; d[i] += s[i]; } cout << "\n"; for (int i = 0; i < n; ++i)r[i] -= s[i]; } cout << score / 100; } int main(int argc, char* argv[]) { starttime = chrono::system_clock::now(); ios::sync_with_stdio(false); std::cin.tie(nullptr); solve(); exit(0); }