http://codeforces.com/contest/1185/problem/C2
題意:一個序列的數字,從左往右取數字,第i的數字一定要取,問你前面最少只有幾個數字沒取,滿足取的數字和小於m
最開始那個簡單的題用優先隊列過了,這個會超時還是交了一發,blem/C2
題意:一個序列的數字,從左往右取數字,第i的數字一定要取,問你前面最少只有幾個數字沒取,滿足取的數字和小於m
最開始那個簡單的題用優先隊列過了,這個會超時還是交了一發,第十四哥樣例就超時了。
思路:所有的數字在1-100以內,所以開一個數組記錄每個數字出現的個數。
#include<bits/stdc++.h>
using namespace std;
int b[110];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=0; i<n; i++)
{
int a;
scanf("%d",&a);
int sum=0;
int k=0;
sum=m-a;
for(int j=1; j<=100; j++)
{
int ans=min(sum/j,b[j]);
k+=ans;
sum-=ans*j;
}
b[a]++;
printf("%d ",i-k);
}
}