Problem 3. 吃麵包
(Time Limit: 3 seconds)
問題描述 :
有
N 個麵包在你面前排成一排,每個麵包都有不同的飽足程度,你想知道把其中某一段的麵包吃掉會達到多少飽足度。
輸入說明:
第一行輸入一正整數 S(1≤S≤10),表示共有 S 組測資,每組測試資料的開頭會有兩個正整數 N, M
(1≤N , M ≤100,000),N 代表麵包的總數量, M 代表欲測試資料的數量,接下來一行有
N 個不超過 1,000 的正整數,依序代表每個麵包的飽足度,接下來
M 行每行有兩個數字 Q,R (1 ≤ Q ≤ R ≤ N ),代表你想要吃掉第 Q 個到第
R 個麵包。
輸出說明:
對每組測資輸出 M 行,代表吃完每組麵包的總飽足程度。
範例:
Sample
Input:
|
Sample
Output:
|
1
3 3
1 2 3
1 3
1 2
2 3
|
6
3
5
|
說明:
依題目命名變數,依範例的測資為例來解釋題目
s = 1,代表幾組測資(重複3 3 1 2 3 1 3 1 2 2 3這些位置的測資)
N = 3,代表麵包的總數量,所以有三個麵包(1 2 3)的飽足感
第一個麵包的飽足感=1
第二個麵包的飽足感=2
第三個麵包的飽足感=3
M = 3,代表欲測試資料的數量(1 3,1 2,2 3)
第一筆測資(1 3):代表第一個麵包到第三個麵包的飽足感總和=1+2+3=6
第二筆測資(1 2):代表第一個麵包到第二個麵包的飽足感總和=1+2=3
第三筆測資(2 3):代表第二個麵包到第三個麵包的飽足感總和=2+3=5
- #include <iostream>
- using namespace std;
- int main() {
- // Problem 3. 吃麵包
- int s;//測資數
- cin >> s;
- for(int i = 0 ;i < s;i++)
- {
- int n, m;
- //n = 麵包的總數量
- //m = 欲測距離的數量
- cin >> n >> m;
- int sat[n];//Satiety飽足感
- int q, r;
- int sum = 0;
- //從第q個吃到第r個麵包
- //1 3 => 第1,2,3個麵包
- for(int j = 0;j < n;j++)
- {
- cin >> sat[j];
- }
- for(int j = 0;j < m;j++)
- {
- cin >> q >> r;
- for(int k = q-1;k <= r-1;k++)
- {
- sum = sum + sat[k];
- }
- cout << sum << endl;
- sum = 0;
- }
- }
- return 0;
- }
沒有留言:
張貼留言