첫째줄 : 실제 연산할 수의 개수
둘째줄 : 실제 연산 대상
셋째줄 : 구간 수
넷째줄~ : 구간 (즉, 배열의 인덱스)
1초 안에 해야하는데 주어지는 수는 10만개라서 생각을 해야한다.
이런 경우에는 누적합을 구해준 뒤, 구간에 해당하지 않는 수들을 빼주면 된다.
using System.Text;
namespace SongE
{
class Program
{
static string Hap(int[] nujeok, int[] section)
{
if (section[0] == 0)
return nujeok[section[1]].ToString();
else
return (nujeok[section[1]] - nujeok[section[0] - 1]).ToString();
}
private static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
Console.ReadLine();
int[] nums = Array.ConvertAll(Console.ReadLine().Split(), s => int.Parse(s));
int m = int.Parse(Console.ReadLine());
int[] nujeok = new int[nums.Length];
int sum = 0;
for(int i = 0; i < nums.Length; i++)
{
sum += nums[i];
nujeok[i] = sum;
}
for(int i = 0; i < m; i++)
{
int[] section = Array.ConvertAll(Console.ReadLine().Split(), s => int.Parse(s) - 1);
sb.AppendLine(Hap(nujeok, section));
}
Console.Write(sb.ToString());
}
}
}