前缀和
使用哈希可以适当减少复杂度
#include <iostream>
#include <unordered_map>
using namespace std;
typedef long long ll;
const int N = 1e4+5;
ll S[N];
int main(){
ll n, k, x;
scanf("%lld%lld", &n, &k);
for(int i = 1; i <= n; i++){
scanf("%lld", &x);
S[i] = S[i-1] + x;
}
unordered_map<ll, int> mp;
mp[0] = 0;
ll sum = 0;
int l = N, r = N;
for(int i = 1; i <= n; i++){
int lx=N, rx=N;
if(mp.count(S[i] - k)){
lx = mp[S[i]-k]+1;
rx = i;
}
if(!mp.count(S[i])) mp[S[i]] = i;
// cout<<lx<<" "<<rx<<endl;
if(lx < l || (lx == l && rx < r)){
l = lx;
r = rx;
}
}
if(l!= N){
printf("%d %d\n", l, r);
}else puts("No Solution\n");
return 0;
}