結果
問題 | No.489 株に挑戦 |
ユーザー |
![]() |
提出日時 | 2017-02-24 22:48:30 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 66 ms / 1,000 ms |
コード長 | 2,303 bytes |
コンパイル時間 | 850 ms |
コンパイル使用メモリ | 91,032 KB |
実行使用メモリ | 5,632 KB |
最終ジャッジ日時 | 2024-07-19 22:56:43 |
合計ジャッジ時間 | 2,978 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 35 |
ソースコード
#include<iostream>#include<vector>#include<string>#include<algorithm>#include<map>#include<set>#include<utility>#include<cmath>#include<cstring>#include<queue>#include<stack>#include<cstdio>#include<sstream>#include<iomanip>#define loop(i,a,b) for(int i=a;i<b;i++)#define rep(i,a) loop(i,0,a)#define pb push_back#define mp make_pair#define all(in) in.begin(),in.end()#define shosu(x) fixed<<setprecision(x)using namespace std;//kaewasuretyuuitypedef long long ll;typedef pair<int,int> pii;typedef vector<int> vi;typedef vector<vi> vvi;typedef vector<pii> vp;typedef vector<vp> vvp;typedef vector<string> vs;typedef vector<double> vd;typedef vector<vd> vvd;typedef pair<int,pii> pip;typedef vector<pip>vip;const double PI=acos(-1);const double EPS=1e-9;const int inf=1e8;int dx[4]={0,1,0,-1};int dy[4]={1,0,-1,0};typedef pii SegT;const pii defvalue=pii(0,0);//const int defvalue=0;class SegTree{private:vector<SegT>val;int n;SegT combine(SegT a,SegT b){if(a.first==b.first){if(a.second<b.second)return a;else return b;}if(a.first>b.first)return a;else return b;// return max(a,b);}public:SegTree(int size){n=1;while(n<size)n<<=1;val=vector<SegT>(2*n,defvalue);}SegTree(const vector<SegT> &in){n=1;while(n<in.size())n<<=1;val=vector<SegT>(2*n,defvalue);for(int i=n-1+in.size()-1;i>=0;i--){if(n-1<=i)val[i]=in[i-(n-1)];else val[i]=combine(val[i*2+1],val[i*2+2]);}}void update(int i,SegT a){i+=n-1;val[i]=a;while(i>0){i=(i-1)/2;val[i]=combine(val[i*2+1],val[i*2+2]);}}SegT query(int a,int b,int k=0,int l=0,int r=-1){//[a,b)if(r==-1)r=n;if(r<=a||b<=l)return defvalue;if(a<=l&&r<=b)return val[k];else return combine(query(a,b,k*2+1,l,(l+r)/2),query(a,b,k*2+2,(l+r)/2,r));}void tmp(){// rep(i,val.size())cout<<" "<<val[i];cout<<endl;}};int main(){int n,d,q;cin>>n>>d>>q;SegTree st(n);vi in(n);rep(i,n){int a;cin>>a;in[i]=a;st.update(i,pii(a,i));}int out=-1;int a,b;rep(i,n-1){pii t=st.query(i+1,i+1+d);if(out<t.first-in[i]){out=t.first-in[i];a=i;b=t.second;}}if(out<0)out=0;cout<<(ll)out*q<<endl;if(out>0){cout<<a<<" "<<b<<endl;}}