360 2017年校园招聘第三题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010639500/article/details/67651042
 

题目概述:

现在有一台机器,这台机器可以接受两种形式任务:(1)任务列表,任务列表里面有N个任务,对于第i个任务,机器在T时间开始执行,并在1个单位时间内做完。(2)临时任务,机器可以在任意时间接受一个临时任务,但任务列表里面的任务优先级要高于临时任务,也就是说当机器空闲的时候才会执行临时任务。现在机器已经接受一个任务列表。接下来会有M个临时任务,我们想知道每个临时任务何时被执行。为了简化问题我们可以认为这M个临时任务是独立无关即任务是可以同时执行的,互不影响。

代码如下:

#include<iostream>
#include<vector>

using namespace std;

void main()
{
    int num1,num2;
    cin>>num1>>num2;
    vector<int>task;
    
    //存储输入的task时间
    for(int i=0;i<num1;i++)
   {
         int temp;
         cin>>temp;
         task.push_back(temp);
    }

    //存储断层,方便下一步查找
    vector<int>base;//存储task中的断层
    for(int i=0;i<num1-1;i++)
    {
         if(task[i]+1!=task[i+1])
              base.push_back(task[i]+1);
     }
     base.push_back(task[num1-1]+1);

     //进行查找
     vector<int>res;
     for(int i=0;i<num2;i++)
     {
          int temp3;
          cin>>temp3;
          for(int i=0;i<base.size();i++)
          {
               if(temp3<=base[i])
                {
                       res.push_back(base[i]);
                       break;
                 }
          }
      }

       for(int i=0;i<res.size();i++)
              cout<<res[i]<<endl;
       system("pause");
}

看到题目后的第一想法,可能还有很多需要改进的地方。

猜你喜欢

转载自blog.csdn.net/u010639500/article/details/67651042
360
今日推荐