一二三四五 上山打老虎

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

posted @ 2021-03-23 20:45  黒川川  阅读(59)  评论(0)    收藏  举报