class Solution {
public int[] solution(int[] sequence, int k) {
int[] answer = new int[2];
long[] sum = new long[sequence.length];
sum[0] = sequence[0];
if(sequence[0] == k){
answer[0] = 0;
answer[1] = 0;
return answer;
}
for(int i=1;i<sequence.length;i++){
sum[i] = sum[i-1] + sequence[i];
if(sequence[i] == k){
answer[0] = i;
answer[1] = i;
return answer;
}
}
int left = 0;
int right = 1;
int answerLength = Integer.MAX_VALUE;
while(left<sequence.length && right<sequence.length && left<right){
long partSum;
if(left == 0) partSum = sum[right];
else partSum = sum[right] - sum[left-1];
if(partSum == k){
int nowLength = right - left + 1;
if(nowLength < answerLength){
answer[0] = left;
answer[1] = right;
answerLength = nowLength;
}
left++;
}
else if(partSum > k){
left++;
}
else if(partSum < k){
right++;
}
}
return answer;
}
}

