ソースコード
#include <bits/stdc++.h>
using namespace std;
#define lp(i,n) for(int i=0;i<n;i++)
#define fordebug int hoge;cin>>hoge;
#define DEKAI 1000000007;
int main(){
int n,k,b;
cin>>n>>k>>b;
int x[16];
lp(i,k) x[i]=b;
int num[16];
lp(i,k) num[i]=0;
lp(i,n){
int t;
cin>>t;
int endf=0;
while(endf!=1){
int stat=0,memos=30,memot;
lp(i,k){
if(x[i]>=t){
if(memos>num[i]){
memos=num[i];
memot=i;
}
stat=1;
}
if(i==k-1&&stat==1){
x[memot]-=t;
num[memot]++;
endf=1;
}
if(i==k-1&&stat==0){
int ninn1,ninn2,nin1=1000000,nin2=1000000;
lp(j,k){
if(x[j]==0) continue;
if(nin1>x[j]){
nin2=nin1;
ninn2=ninn1;
nin1=x[j];
ninn1=j;
}
else if(nin2>x[j]){
nin2=x[j];
ninn2=j;
}
}
if(num[ninn1]<num[ninn2]) swap(ninn1,ninn2);
x[ninn2]+=x[ninn1];
num[ninn2]--;
num[ninn1]++;
x[ninn1]=0;
}
lp(j,k){
if(num[j]<0) num[j]=0;
}
}
/* lp(j,k){
cout<<j<<" "<<x[j]<<" "<<num[j]<<endl;
}*/
}
}
int ans=0;
lp(i,k){
ans+=max(0,num[i]-1);
}
cout<<ans<<endl;
return 0;
}