#include #include using namespace std; const int INT_MAX=0x7fffffff; class RMQ{ private: vector val; int n; public: RMQ(int size){ n=1; while(n(2*n,INT_MAX); } //x番目の要素をaに更新する void update(int x,int a){ x+=n-1; val[x]=a; while(x>0){ x=(x-1)/2; val[x]=min(val[x*2+1],val[x*2+2]); } } //a<=x> N >> D >> K; for(int i = 0; i < N; i++) { cin >> x[i]; } RMQ rmq(N + 1); for(int i = 0; i < N; i++) { rmq.update(i, -x[i]); } int64_t answer = 0; for(int i = 0; i < N; i++) { int64_t tmp = -K * (x[i] + rmq.minimum(i, min(N, i + D + 1))); if(tmp > answer) answer = tmp; } cout << answer << endl; if(answer != 0) { for(int i = 0; i < N; i++) { int64_t tmp = -K * (int64_t)(x[i] + rmq.minimum(i, min(N, i + D + 1))); if(tmp == answer) { for(int j = i + 1; j < N; j++) { int64_t tmp2 = -K * (x[i] - x[j]); if(tmp2 == tmp) { cout << i << " " << j << endl;; return 0; } } } } } return 0; }