存课程代码
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
const int N = 10 , INF = 0x3f3f3f3f;
int n , m , st , res[N];
struct Edge{
char name[20];
int idx , intime , optime;
float resp;
bool operator<(const Edge &t) const{
if(resp < t.resp) return 0;
else if(resp == resp){
if(optime > t.optime) return 0;
else if(optime == t.optime && idx > t.idx) return 0;
}
return 1;
}
};
int main(){
n = 3;
vector<Edge> v;
st = INF;
for(int i=0;i<n;++i){
Edge t;
t.idx = i;
scanf("%s%d%d" , t.name , &t.intime,&t.optime);
t.resp = 0.0;
m += t.optime;
st = min(st , t.intime);
v.push_back(t);
}
for(int i=0;i<v.size();++i)
if(v[i].intime == st) v[i].resp = 1.0;
int cnt = st;
while(v.size()){
sort(v.begin() , v.end());
Edge t = v[0];
swap(v[0] , v[v.size() - 1]);
v.pop_back();
cnt += t.optime;
res[t.idx] = cnt;
for(int i=0;i<v.size();++i) v[i].resp = 1 + (cnt - v[i].intime + 0.0) / v[i].optime;
}
for(int i=0;i<n;++i) printf("%d " , res[i]);
return 0;
}