UVa210_Concurrency Simulator_双端队列的使用

原题链接

不得不说,看懂题真的很重要!

我也是别人的代码才看懂题在讲什么TAT

#include 
#include 
#include 
#include 
#include 

using namespace std;

const int maxn = 1000;
const int times = 5;

deque qr;                      //模拟运行的队列
queue qw;                      //模拟被挂起的程序
vector program[maxn];       //记录每个程序
int var[26], q[maxn],t[times],timelimit;
bool lock = false;

void run(int i)
{
    int Q = timelimit, x;       //设定时间限制
    string comd;
    while(Q > 0){
        comd = program[i][q[i]];//q数组存储相应程序的行数
        switch(comd[2])
        {
            case '=':   Q -= t[0];
                        x = comd[4] - '0';
                        if (comd.size() == 6) x = x*10 + comd[5]-'0';
                        var[comd[0]-'a'] = x;
                        break;
                        //赋值
            case 'i':   Q -= t[1];
                        cout<>cas;
    while(cas--){
        int n;
        cin>>n;
        for(int i = 0;i < times;i++) cin>>t[i];
        cin>>timelimit;
        string s;
        for(int i = 1;i <= n;i++)
        {
            program[i].clear();
            while(getline(cin,s))
            {
                if ( s == "") continue;
                program[i].push_back(s);
                if ( program[i].back() == "end") break;
            }
            qr.push_back(i);//模拟添加程序
        }
        memset(q, 0 ,sizeof(q));
        memset(var, 0, sizeof(var));
        while(!qr.empty()) //当无运行程序时停止
        {
            int t = qr.front();
            qr.pop_front();
            run(t);
        }
        if(cas) cout<


你可能感兴趣的:(UVa210_Concurrency Simulator_双端队列的使用)