代码改变世界

School Personal Contest #1 (Codeforces Beta Round #38)---A. Army

2017-06-14 18:00  tlnshuju  阅读(252)  评论(0编辑  收藏  举报

time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

The Berland Armed Forces System consists of n ranks that are numbered using natural numbers from 1 to n, where 1 is the lowest rank and n is the highest rank.

One needs exactly di years to rise from rank i to rank i + 1. Reaching a certain rank i having not reached all the previous i - 1 ranks is impossible.

Vasya has just reached a new rank of a, but he dreams of holding the rank of b. Find for how many more years Vasya should serve in the army until he can finally realize his dream.

Input

The first input line contains an integer n (2 ≤ n ≤ 100). The second line contains n - 1 integers di (1 ≤ di ≤ 100). The third input line contains two integers a and b (1 ≤ a < b ≤ n). The numbers on the lines are space-separated.

Output

Print the single number which is the number of years that Vasya needs to rise from rank a to rank b.

Sample test(s)
input
3
5 6
1 2
output
5
input
3
5 6
1 3
output
11




解题思路:就是简单的求区间和。

直接开个和数组,a[i]代表i之前(包含i)的全部数的和。

查询时。直接两个和减一下就可以。





AC代码:

#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
#define INF 0x7fffffff

int c[105];

int main()
{
    #ifdef sxk
        freopen("in.txt","r",stdin);
    #endif
    int n, a, b, t;
    while(scanf("%d",&n)!=EOF)
    {
        c[0] = 0;
        scanf("%d", &c[1]);
        for(int i=2; i<=n-1; i++){
            scanf("%d", &t);
            c[i] = c[i-1] + t;
        }
        scanf("%d%d", &a, &b);
        printf("%d\n", c[b-1] - c[a-1]);
    }
    return 0;
}