結果
| 問題 | No.489 株に挑戦 |
| コンテスト | |
| ユーザー |
tekitouk
|
| 提出日時 | 2017-02-25 19:45:13 |
| 言語 | C++14 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
CE
(最新)
WA
(最初)
|
| 実行時間 | - |
| コード長 | 1,473 bytes |
| 記録 | |
| コンパイル時間 | 31 ms |
| 最終ジャッジ日時 | 2026-03-04 21:43:14 |
| 合計ジャッジ時間 | 365 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
3abee9bfdc12
[/j_bin/judge_tool judge 40000 ../CompileMemory.txt /dev/null sud /dev/null _ g++-15 -O2 -lm -std=c++14 -Wuninitialized -DONLINE_JUDGE -o a.out main.cpp]
strconv.Atoi: parsing "../CompileMemory.txt": invalid syntax
goroutine 1 [running]:
runtime/debug.Stack()
/home/yuki2006/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/debug/stack.go:26 +0x5e
main.main.func1()
/home/yuki2006/gopath/src/yukicoder/judge/main.go:22 +0x57
panic({0x7d6880?, 0xc0000f6240?})
/home/yuki2006/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/panic.go:783 +0x132
main.judgeMain({0xc000012150, 0x5?, 0x0?})
/home/yuki2006/gopath/src/yukicoder/judge/judge_linux.go:121 +0x4b1
main.main()
/home/yuki2006/gopath/src/yukicoder/judge/main.go:97 +0x277
ソースコード
#include <sstream>
#include <iostream>
#include <algorithm>
#include <deque>
#include <string>
using namespace std;
typedef long long ll;
ll x[100005];
ll maximum[100005];
ll maximum2[100005];
int main() {
int N, D;
ll K;
scanf("%d %d %lld", &N, &D, &K);
for (int i = 0; i < N; i++) {
scanf("%lld", &x[i]);
}
deque<ll> nums;
int cnt = 0;
while (!nums.empty()) {
nums.pop_back();
}
for (int i = 0; i < N; i++) {
while (!nums.empty() && x[i] > nums.back()) {
nums.pop_back();
}
nums.push_back(x[i]);
if (i >= D && nums.front() == x[i - D]) {
nums.pop_front();
}
if (i >= D - 1) {
maximum[cnt] = nums.front();
cnt++;
}
}
int cnt2 = 0;
ll ma = x[N - 1];
for (int i = N - 2;; i--) {
if (cnt2 >= D) { break; }
maximum2[i] = ma;
ma = max(ma, x[i]);
cnt2++;
}
ma = 0ll;
ll ans_max, ans_min;
for (int i = 0; i < cnt - 1; i++) {
if (ma < maximum[i + 1] - x[i]) {
ma = maximum[i + 1] - x[i];
ans_max = maximum[i + 1];
ans_min = x[i];
}
}
for (int i = cnt-1; i < N - 1; i++) {
if (ma < maximum2[i] - x[i]) {
ma = maximum2[i] - x[i];
ans_max = maximum2[i];
ans_min = x[i];
}
}
cout << ma*K << endl;
if (ma != 0ll) {
int ansj, ansk;
for (int i = 0; i < N - 1; i++) {
if (ans_min == x[i]) {
ansj = i;
break;
}
}
for (int i = ansj + 1; i < N; i++) {
if (ans_max == x[i]) {
ansk = i;
break;
}
}
printf("%d %d\n",ansj,ansk);
}
return 0;
}
tekitouk