Vanya smashes potato in a vertical food processor. At each moment of time the height of the potato in the processor doesn't exceed h and the processor smashes k centimeters of potato each second. If there are less than k centimeters remaining, than during this second processor smashes all the remaining potato.
Vanya has n pieces of potato, the height of the i-th piece is equal to ai. He puts them in the food processor one by one starting from the piece number 1 and finishing with piece number n. Formally, each second the following happens:
- If there is at least one piece of potato remaining, Vanya puts them in the processor one by one, until there is not enough space for the next piece.
- Processor smashes k centimeters of potato (or just everything that is inside).
Provided the information about the parameter of the food processor and the size of each potato in a row, compute how long will it take for all the potato to become smashed.
The first line of the input contains integers n, h and k (1 ≤ n ≤ 100 000, 1 ≤ k ≤ h ≤ 109) — the number of pieces of potato, the height of the food processor and the amount of potato being smashed each second, respectively.
The second line contains n integers ai (1 ≤ ai ≤ h) — the heights of the pieces.
Print a single integer — the number of seconds required to smash all the potatoes following the process described in the problem statement.
5 6 3
5 4 3 2 1
5
5 6 3
5 5 5 5 5
10
5 6 3
1 2 1 1 1
2
Consider the first sample.
- First Vanya puts the piece of potato of height 5 into processor. At the end of the second there is only amount of height 2 remaining inside.
- Now Vanya puts the piece of potato of height 4. At the end of the second there is amount of height 3 remaining.
- Vanya puts the piece of height 3 inside and again there are only 3 centimeters remaining at the end of this second.
- Vanya finally puts the pieces of height 2 and 1 inside. At the end of the second the height of potato in the processor is equal to 3.
- During this second processor finally smashes all the remaining potato and the process finishes.
In the second sample, Vanya puts the piece of height 5 inside and waits for 2 seconds while it is completely smashed. Then he repeats the same process for 4 other pieces. The total time is equal to 2·5 = 10 seconds.
In the third sample, Vanya simply puts all the potato inside the processor and waits 2 seconds.
题意:输入 n,h,k n个数 累计和不能超过h 每秒最多减少k 问减少到零需要多少秒
题解;模拟
gou
#include<iostream> #include<cstring> #include<cstdio> #include<queue> #include<stack> #include<cmath> #include<map> #define ll __int64 #define pi acos(-1.0) #define mod 1000000007 using namespace std; int main() { ll n,m,k,l,gg,h,x; scanf("%I64d%I64d%I64d",&n,&h,&k); m=0; l=0; for(int i=0;i<n;i++){ scanf("%I64d",&x); gg=l+x; if(gg>h){ m++; gg=x; } l=gg%k; m+=gg/k; } if(l) m++; printf("%I64d\n",m); return 0; }
hsd
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<queue> 5 #include<stack> 6 #include<cmath> 7 #define ll __int64 8 #define pi acos(-1.0) 9 #define mod 1000000007 10 using namespace std; 11 ll n,h,k; 12 ll a[100005],ans,f,l; 13 int main() 14 { 15 scanf("%I64d %I64d %I64d",&n,&h,&k); 16 ans=0; 17 f=0; 18 l=0; 19 for(int i=1;i<=n;i++) 20 scanf("%I64d",&a[i]); 21 for(int i=1;i<=n;i++) 22 { 23 l=f+a[i]; 24 if(l<=h) 25 { 26 if(l>=k) 27 { 28 ans+=(l/k); 29 l=l%k; 30 } 31 f=l; 32 } 33 else 34 { 35 if(f<=k) 36 { 37 l=l-f; 38 f=0; 39 ans++; 40 } 41 if(l>=k) 42 { 43 ans+=(l/k); 44 l=l%k; 45 } 46 f=l; 47 } 48 } 49 if(f!=0) 50 ans++; 51 cout<<ans<<endl; 52 return 0; 53 }