0
点赞
收藏
分享

微信扫一扫

【CCF-CSP】202203-3 计算资源调度器

山竹山竹px 2022-04-21 阅读 146
算法

题目:计算资源调度器

50分代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int n,m;
typedef struct node{
    int area;//分区
    int id;//节点编号
    int task;//任务数量
}node;

bool cmp(const node x,const node y){
    if(x.task != y.task){
        return x.task<y.task;
    }
    else{
        return x.id<y.id;
    }
}

int main()
{
    cin>>n>>m;
    int area_flag[N];
    node nodes[n];
    for(int i=0; i<n; i++){
        int area;
        cin>>area;
        area_flag[area] = 1;
        nodes[i].area = area;
        nodes[i].id = i+1;
        nodes[i].task = 0;
    }
    int g;
    cin>>g;
    for(int i=0; i<g; i++){
        int f,na,pa,paa,paar;
        long long a;
        cin>>f>>a>>na>>pa>>paa>>paar;
        if(na == 0){
            sort(nodes,nodes+n+1,cmp);
            for(int i=0; i<f; i++){
                if(i<n){
                    cout<<nodes[i].id<<" ";
                    nodes[i].task++;
                }
                else{
                    int t = i%n;
                    cout<<nodes[t].id<<" ";
                    nodes[t].task++;
                }
            }
            cout<<endl;
        }
        else{
            if(area_flag[na] != 1){
                for(int i=0; i<f; i++){
                    cout<<0<<" ";
                }
                cout<<endl;
            }
            else{
                sort(nodes,nodes+n+1,cmp);
                while(f){
                    for(int i=0; i<n; i++){
                        if(nodes[i].area == na){
                            cout<<nodes[i].id<<" ";
                            nodes[i].task++;
                            f--;
                            if(f<=0) break;
                        }
                    }
                }
                cout<<endl;
            }

        }
    }
}

举报

相关推荐

0 条评论