[白俊]1659号は区間と4を求めます


問題とI/O



質問へのアクセス


累積配列を用いて解決した.
N個の数を入力すると、前の数を加えて累積配列を求める.arr[i] = arr[i - 1] + integer;
その後、iからjまでの積算とjからi-1までの積算和を減算するようにiからjまでの和を求める.arr[j] - arr[i - 1]

インプリメンテーションコード

import java.io.*;
import java.util.*;

public class Main {
  public static int[] arr;

  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    int N = Integer.parseInt(st.nextToken());
    int M = Integer.parseInt(st.nextToken());

    arr = new int[N+1];

    st = new StringTokenizer(br.readLine());
    for(int i = 1; i <= N; i++) {
      arr[i] = arr[i-1] + Integer.parseInt(st.nextToken());
    }

    for(int k = 0; k < M; k++) {
      st = new StringTokenizer(br.readLine());
      int i = Integer.parseInt(st.nextToken());
      int j = Integer.parseInt(st.nextToken());

      System.out.println(arr[j] - arr[i-1]);
    }
  }
}