比赛 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;
}