CCF-CSP-2017-09-2公共钥匙盒
链接:http://118.190.20.162/view.page?gpid=T62
坑点:给出的w,s,c中c是上课的时长,不是上课结束时间
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=(int)2e4+5;
int a[maxn];
struct node{
int no,ti,f;
}b[maxn];
bool cmp(node s,node t){
//if(s.ti==t.ti&&s.f!=t.f&&s.no==t.no)return s.f>t.f;
if(s.ti==t.ti&&s.f!=t.f)return s.f<t.f;
if(s.ti==t.ti)return s.no<t.no;
return s.ti<t.ti;
}
int main (){
int n,k;
cin>>n>>k;
k*=2;
int no,l,r;
for(int i=1;i<=n;i++)a[i]=i;
for(int i=0;i<k;i+=2){
cin>>no>>l>>r;
b[i].no=no;
b[i+1].no=no;
b[i].ti=l;
b[i+1].ti=l+r;
b[i].f=true;
b[i+1].f=false;
}
sort(b,b+k,cmp);
for(int i=0;i<k;i++){
if(b[i].f){
for(int j=1;j<=n;j++){
if(a[j]==b[i].no){
a[j]=0;
break;
}
}
}
else {
for(int j=1;j<=n;j++){
if(a[j]==0){
a[j]=b[i].no;
break;
}
}
}
// for(int i=1;i<=n;i++)
// cout<<a[i]<<" ";
// cout<<endl;
}
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}

浙公网安备 33010602011771号