AcWing 5013. 天梯赛的赛场安排
原题链接
中等
作者:
shaki
,
2024-03-14 14:38:25
,
所有人可见
,
阅读 127
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
int main()
{
int n,c;
scanf("%d%d",&n,&c);
priority_queue<int> q;
int res=0;
for(int i=1;i<=n;i++)
{
string s;
int d;
cin>>s>>d;
if(d%c==0) cout<<s<<" "<<d/c<<endl;
else
{
cout<<s<<" "<<d/c+1<<endl;
q.push(d%c);
}
res+=d/c;
}
vector<int> sc;
while(!q.empty())
{
int tmp=q.top();
q.pop();
bool flag=true;
for(int i=0;i<sc.size();i++)
{
if(c-sc[i]>=tmp)
{
sc[i]+=tmp;
flag=false;
break;
}
}
if(flag)
{
sc.push_back(tmp);
res++;
}
}
cout<<res<<endl;
return 0;
}
作者简直天才!我按部就班讨论的。。。。
我也是