題目描述
對於給定的一個長度爲N的正整數數列A[i],現要將其分成連續的若干段,並且每段和不超過M(可以等於M),問最少能將其分成多少段使得滿足要求。
輸入輸出格式
輸入格式:
輸入文件divide_a.in的第1行包含兩個正整數N,M,表示了數列A[i]的長度與每段和的最大值,第2行包含N個空格隔開的非負整數A[i],如題目所述。
輸出格式:
輸出文件divide_a.out僅包含一個正整數,輸出最少劃分的段數。
輸入輸出樣例
輸入樣例#1:
5 6
4 2 4 5 1
輸出樣例#1:
3
#include <iostream>
using namespace std;
const int N = 100001;
int a[N];
int main()
{
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++)
cin >> a[i];
int t = 0, ans = 0;
for (int i = 1; i <= n; i++)
{
if (t + a[i] > m)
{
t = a[i];
ans++;
continue;
}
t += a[i];
}
cout << ans + 1 << endl;
return 0;
}