/**
[线段树]hdu 2430 Beans
给出一系列数,求最大的连续子段和且满足sigma % p <= k
10^6,只能想Nlog(N)的算法。
分别枚举以i结尾的子段的最优值,则使得sum[i] - sum[id]最大即是使id最小。
问题转化为了求最小id。
易知,满足条件的sum[id] % p 的范围 为 [sum[i] % p - k,sum[i] % p],
所以对取模后的结果建树,维护里面最小的id值。
*/
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 1000002
#define INF 10000000
#define L(i) (i) << 1
#define R(i) (i) << 1 | 1
struct _st
{
int l,r,Min;
int mid()
{
return (l + r) >> 1;
}
}st[N<<2];
void build(int id,int l,int r)
{
st[id].l = l;
st[id].r = r;
st[id].Min = INF;
if(l == r)
return;
int mid = st[id].mid();
build(L(id),l,mid);
build(R(id),mid