結果
| 問題 | No.489 株に挑戦 |
| コンテスト | |
| ユーザー |
いともたやすく行われるえげつない行為
|
| 提出日時 | 2017-02-25 19:06:06 |
| 言語 | Go (1.23.4) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,675 bytes |
| 記録 | |
| コンパイル時間 | 11,768 ms |
| コンパイル使用メモリ | 222,996 KB |
| 実行使用メモリ | 21,544 KB |
| 最終ジャッジ日時 | 2024-06-11 15:00:26 |
| 合計ジャッジ時間 | 16,313 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 3 |
| other | TLE * 1 -- * 34 |
ソースコード
// #E
// yukicoder no.489 main.go
package main
import (
"bufio"
"fmt"
"io"
"os"
"sort"
)
type mock struct {
day int
value int
}
func searching(data1, data2 []mock, window int) (int, int, int) {
max, buy, sell := int(-1e9), -1, -1
for high := range data2 {
for low := range data1 {
if data2[high].value <= data1[low].value {
break
}
if data1[low].day < data2[high].day &&
data2[high].day <= data1[low].day+window {
tmp := data2[high].value - data1[low].value
if max == tmp {
if data1[low].day == buy {
if data2[high].day < sell {
sell = data2[high].day
continue
}
}
if data1[low].day < buy {
buy, sell = data1[low].day, data2[high].day
}
}
if max < tmp {
max, buy, sell = tmp, data1[low].day, data2[high].day
}
}
}
}
return max, buy, sell
}
func solve(in io.Reader, out, err io.Writer) {
day, window, origin := 0, 0, 0
value, buy, sell := 0, 0, 0
fmt.Fscan(in, &day, &window, &origin)
data1 := make([]mock, day)
data2 := make([]mock, day)
for i := range data1 {
temp := 0
fmt.Fscan(in, &temp)
data1[i].day = i
data1[i].value = temp
data2[i].day = i
data2[i].value = temp
}
sort.Slice(data1, func(i, j int) bool {
return data1[i].value < data1[j].value
})
sort.Slice(data2, func(i, j int) bool {
return data2[i].value > data2[j].value
})
tempV, buy, sell := searching(data1, data2, window)
if tempV < 0 {
tempV = 0
}
value = origin * tempV
fmt.Fprintln(out, value)
if value != 0 {
fmt.Fprintln(out, buy, sell)
}
}
func main() {
br := bufio.NewReaderSize(os.Stdin, int(1e7))
solve(br, os.Stdout, os.Stderr)
}
いともたやすく行われるえげつない行為