通过倒序枚举控制可选择的区间
int v[1111];
map<int,int>mp;
void solve()
{
int n;cin>>n;
rpp(i,n)
{
cin>>v[i];
v[i]+=v[i-1];
}
map<int,int>tag;
rpp(i,n)
for(int j=i;j>=1;--j)
if((tag[v[i]-v[j-1]]&&j>tag[v[i]-v[j-1]])||tag[v[i]-v[j-1]]==0)
++mp[v[i]-v[j-1]],tag[v[i]-v[j-1]]=i;
int ans=-1;
for(map<int,int>::iterator it=mp.begin();it!=mp.end();++it)
if(it->second>mp[ans]) ans=it->first;
cout<<mp[ans]<<endl;
int r=0;
rpp(i,n)
{
for(int j=i;j>r;--j)//倒序枚举
{
if(v[i]-v[j-1]==ans)
{
cout<<j<<" "<<i<<endl;
r=i;//防止区间交叠
}
}
}
}
signed main()
{
solve();
return 0;
}