From :http://codeforces.com/blog/entry/67829
模拟题
代码:
#include <bits/stdc++.h>
using namespace std;
const int T = 100;
map<int, int> m;
int main()
{
int n, m;
scanf("%d%d", &n, &m);
int sum=0;
vector<int> t(n), count(T+1, 0);
for(int i = 0; i < n; i++)
{
cin>>t[i];
}
int k;
for(int i=0;i<n;i++)
{
k=0;
int d=sum+t[i]-m;
if(d>0)
{
for(int j=T; j >=1;j--)
{
int x=j*count[j];
if(d<=x)
{
k+=(d+j-1) / j;// 向上去整
break;
}
k+=count[j];
d-=x;
}
}
count[t[i]]++;
sum+=t[i];
cout<<k<<" ";
}
cout<<endl;
return 0;
}