結果
問題 | No.489 株に挑戦 |
ユーザー |
|
提出日時 | 2020-07-27 12:47:31 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 823 bytes |
コンパイル時間 | 2,051 ms |
コンパイル使用メモリ | 199,168 KB |
最終ジャッジ日時 | 2025-01-12 06:49:04 |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 34 WA * 1 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:27:25: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 27 | int n,d,k; scanf("%d%d%d",&n,&d,&k); | ~~~~~^~~~~~~~~~~~~~~~~~~ main.cpp:29:23: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 29 | rep(i,n) scanf("%d",&a[i]), a[i]*=-1; | ~~~~~^~~~~~~~~~~~
ソースコード
#include <bits/stdc++.h> #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; using lint=long long; template<class T> vector<int> sliding_window_minimum(const vector<T>& a,int w){ int n=a.size(); if(w>n) return {}; vector<int> res(n-w+1); deque<int> D; rep(i,n){ while(!D.empty() && a[D.front()]>a[i]) D.pop_back(); D.emplace_back(i); if(i>=w-1){ if(i-D.front()>=w) D.pop_front(); res[i-w+1]=D.front(); } } return res; } int main(){ int n,d,k; scanf("%d%d%d",&n,&d,&k); vector<int> a(2*n); rep(i,n) scanf("%d",&a[i]), a[i]*=-1; auto idx=sliding_window_minimum(a,d); lint ans=0; int l,r; rep(i,n){ lint buy=-a[i],sell=-a[idx[i+1]]; if(ans<k*(sell-buy)){ ans=k*(sell-buy); l=i; r=idx[i+1]; } } printf("%lld\n",ans); if(ans>0) printf("%d %d\n",l,r); return 0; }