結果
問題 | No.489 株に挑戦 |
ユーザー |
![]() |
提出日時 | 2022-11-11 12:34:10 |
言語 | C++17(clang) (17.0.6 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 39 ms / 1,000 ms |
コード長 | 1,154 bytes |
コンパイル時間 | 1,132 ms |
コンパイル使用メモリ | 142,548 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-13 08:40:36 |
合計ジャッジ時間 | 3,082 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 35 |
ソースコード
#include <cassert>#include <cmath>#include <algorithm>#include <iostream>#include <iomanip>#include <climits>#include <map>#include <queue>#include <set>#include <cstring>#include <vector>using namespace std;typedef long long ll;struct Node {int day;ll x;Node(int day = -1, ll x = -1) {this->day = day;this->x = x;}bool operator>(const Node &n) const {if (x == n.x) {return day > n.day;} else {return x > n.x;}}};int main() {ll N, D, K;cin >> N >> D >> K;priority_queue <Node, vector<Node>, greater<Node>> pque;ll X[N];for (int i = 0; i < N; ++i) {cin >> X[i];}pque.push(Node(0, X[0]));ll ans = 0;int j = -1;int k = -1;for (int day = 1; day <= N - 1; ++day) {ll x = X[day];while (day - pque.top().day > D) {pque.pop();}ll diff = x - pque.top().x;if (ans < diff * K) {ans = diff * K;j = pque.top().day;k = day;}pque.push(Node(day, x));}if (ans == 0) {cout << 0 << endl;} else {cout << ans << endl;cout << j << " " << k << endl;}return 0;}