比赛 |
20241023 |
评测结果 |
AAWWWWWWWWWWWWWWWWAA |
题目名称 |
Bessie’s Interview |
最终得分 |
20 |
用户昵称 |
flyfree |
运行时间 |
2.067 s |
代码语言 |
C++ |
内存使用 |
25.01 MiB |
提交时间 |
2024-10-23 11:16:56 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define MAXN 300010
inline ll read(){
ll x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
ll k,n,ans,ans_id,ans_t,cnt;
ll t[MAXN],used[MAXN];
vector<ll> vec_pnt[MAXN],vec_line[MAXN];
struct node{
ll id,t;
};
bool operator <(const node a,const node b){
return a.t>b.t;
}
priority_queue<node> q1,q2;
int main(){
freopen("interview.in","r",stdin);
freopen("interview.out","w",stdout);
n=read(),k=read();
for(int i=1;i<=k;i++){
// f[i]=i;
t[i]=read();
q1.push((node){i,t[i]});
}
for(int i=k+1;i<=n;i++){
t[i]=read();
if(!q2.empty()){
q1.push((node){q2.top().id,q2.top().t+t[i]});
q2.pop();
}else{
ll t_now=q1.top().t,id_now=q1.top().id;
vec_pnt[id_now].push_back(++cnt);
vec_line[cnt].push_back(id_now);
q1.pop();
while(!q1.empty()){
if(q1.top().t==t_now){
q2.push((node){q1.top().id,q1.top().t});
vec_pnt[q1.top().id].push_back(cnt);
vec_line[cnt].push_back(q1.top().id);
// cout<<q1.top().id<<" "<<id_now<<endl;
q1.pop();
}else break;
}
q1.push((node){id_now,t_now+t[i]});
}
}
if(!q2.empty())ans_id=q2.top().id,ans_t=q2.top().t;
else ans_id=q1.top().id,ans_t=q1.top().t;
cout<<ans_t<<endl;
for(int i=0;i<vec_pnt[ans_id].size();i++){
ll y=vec_pnt[ans_id][i];
for(int j=0;j<vec_line[y].size();j++){
ll p=vec_line[y][j];
used[p]=1;
}
}
for(int i=1;i<=k;i++)if(used[i])cout<<"1";
else cout<<"0";
return 0;
}