首页 > 代码库 > 172C
172C
模拟
#include<iostream>#include<algorithm>#include<vector>#include<cstdio>#include<Set>using namespace std;struct pas{ int x,t,num,time;}p[100010];set<int>s;vector<int>stu[100010];int n,m,time;int pt[10010];inline int min(int x,int y){ return x<y?x:y;}inline int max(int x,int y){ return x>y?x:y;}inline bool cp(pas x,pas y){ return x.t<y.t;}inline bool cp1(pas x,pas y){ return x.num<y.num;}int main(){ cin>>n>>m; for(int i=1;i<=n;i++) { scanf("%d%d",&p[i].t,&p[i].x); p[i].num=i; } sort(p+1,p+n+1,cp); int pre=1; while(pre<=n) { s.clear(); int dis=0; for(int i=pre;i<min(pre+m,n+1);i++) { s.insert(p[i].x); stu[p[i].x].push_back(i); } if(time<p[min(pre+m-1,n)].t) time+=(p[min(pre+m-1,n)].t-time); int last=0; for(set<int>::iterator it=s.begin();it!=s.end();it++) { time+=(*it-last); for(int i=0;i<stu[*it].size();i++) p[stu[*it][i]].time=time; time+=(1+(stu[*it].size()/2)); stu[*it].clear(); last=*it; } time+=*s.rbegin(); pre=min(pre+m,n+1); } sort(p+1,p+n+1,cp1); for(int i=1;i<=n;i++) printf("%d ",p[i].time); return 0;}
172C
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。