Skip to content

Commit f6eeacb

Browse files
committed
Update main.cpp
1 parent 8f2cb0d commit f6eeacb

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

main.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,19 +55,18 @@ void roundRobin(){
5555
}
5656

5757
void shortestProcessNext(){
58-
priority_queue<pair<int,string>,vector<pair<int,string>>,greater<pair<int,string>>>pq;
58+
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq; //pair of service time and index
5959
int j=0;
6060
for(int i=0;i<last_instant;i++){
6161
for(;j<process_count;){
6262
if(getArrivalTime(processes[j])<=i){
63-
pq.push(make_pair(getServiceTime(processes[j]),getProcessName(processes[j])));
63+
pq.push(make_pair(getServiceTime(processes[j]),j));
6464
j++;
6565
}else
6666
break;
6767
}
6868
if(!pq.empty()){
69-
string processName = pq.top().second;
70-
int processIndex = processToIndex[processName];
69+
int processIndex = pq.top().second;
7170
int arrivalTime = getArrivalTime(processes[processIndex]);
7271
int serviceTime = getServiceTime(processes[processIndex]);
7372
pq.pop();
@@ -89,30 +88,30 @@ void shortestProcessNext(){
8988
}
9089

9190
void shortestRemainingTime(){
92-
priority_queue<pair<int,string>,vector<pair<int,string>>,greater<pair<int,string>>>pq;
91+
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq;
9392
int j=0;
9493
for(int i=0;i<last_instant;i++){
9594
for(;j<process_count;){
9695
if(getArrivalTime(processes[j])==i){
97-
pq.push(make_pair(getServiceTime(processes[j]),getProcessName(processes[j])));
96+
pq.push(make_pair(getServiceTime(processes[j]),j));
9897
j++;
9998
}else
10099
break;
101100
}
102101
if(!pq.empty()){
103-
string processName= pq.top().second;
102+
int processIndex = pq.top().second;
104103
int remainingTime = pq.top().first;
105104
pq.pop();
106-
int processIndex = processToIndex[processName];
107105
int serviceTime = getServiceTime(processes[processIndex]);
108106
int arrivalTime= getArrivalTime(processes[processIndex]);
109107
timeline[i][processIndex]= '*';
108+
110109
if(remainingTime==1){// process finished
111110
finishTime[processIndex]= i+1;
112111
turnAroundTime[processIndex]= (finishTime[processIndex]-arrivalTime);
113112
normTurn[processIndex]= (turnAroundTime[processIndex]*1.0/serviceTime);
114113
}else{
115-
pq.push(make_pair(remainingTime-1,processName));
114+
pq.push(make_pair(remainingTime-1,processIndex));
116115
}
117116
}
118117
}

0 commit comments

Comments
 (0)