結果
問題 | No.489 株に挑戦 |
ユーザー |
![]() |
提出日時 | 2020-02-07 22:49:14 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 45 ms / 1,000 ms |
コード長 | 2,038 bytes |
コンパイル時間 | 2,082 ms |
コンパイル使用メモリ | 200,180 KB |
最終ジャッジ日時 | 2025-01-08 22:42:13 |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 35 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; using PII = std::pair<int, int>; using PLL = std::pair<ll, ll>; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define rep2(i, s, n) for (int i = (s); i < (int)(n); i++) struct player { string name; int time; int total; vector<int> points; }; int main() { #ifdef DEBUG cout << "DEBUG MODE" << endl; ifstream in("input.txt"); //for debug cin.rdbuf(in.rdbuf()); //for debug #endif int n, k, a, t, l, r, d; ll ans; cin >> n >> k >> ans; k++; int num[n]; vector<PII> minprice, maxprice; deque<PII> deqmin, deqmax; rep(i, n) { cin >> a; t = k + i; while (!deqmin.empty()) { if (deqmin.front().second <= i) deqmin.pop_front(); else break; } while (!deqmin.empty()) { if (deqmin.back().first > a) deqmin.pop_back(); else break; } deqmin.push_back(make_pair(a, t)); while (!deqmax.empty()) { if (deqmax.front().second < deqmin.front().second) deqmax.pop_front(); else break; } while (!deqmax.empty()) { if (deqmax.back().first < a) deqmax.pop_back(); else break; } deqmax.push_back(make_pair(a, t)); minprice.push_back(deqmin.front()); maxprice.push_back(deqmax.front()); // for (auto z : deqmin) // cout << z.first << " "; // cout << endl; } d = 0; rep(i, n) { if (d < maxprice[i].first - minprice[i].first) { d = maxprice[i].first - minprice[i].first; l = minprice[i].second - k; r = maxprice[i].second - k; } } cout << ans * d << endl; if (d != 0) cout << l << " " << r <<endl; return 0; }