
알고리즘 분류 : 누적합
난이도 : 실버1
출처 : 백준 - 피아노 체조



악보의 난이도를 배열1에 입력받는다.
이전 악보보다 난이도가 낮다면 배열2에 전 인덱스+1을 한다.
x, y가 주어지면 배열2[y]-배열2[x]값을 출력한다.
import java.util.*;
import java.io.*;
public class Main {
static int cnt;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int arr[] = new int[N];
int arrSum[] = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
arr[0] = Integer.parseInt(st.nextToken());
for(int i=1;i<N;i++) {
arr[i] = Integer.parseInt(st.nextToken());
arrSum[i] = arr[i-1]>arr[i]?arrSum[i-1]+1:arrSum[i-1];
}
int Q = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int i=0;i<Q;i++) {
st = new StringTokenizer(br.readLine());
sb.append(0-arrSum[Integer.parseInt(st.nextToken())-1]+arrSum[Integer.parseInt(st.nextToken())-1]).append("\n");
}
System.out.println(sb);
}
}

배열 인덱스만 조심하면 어렵지 않게 해결할 수 있다.