Untitled
unknown
plain_text
2 years ago
2.8 kB
6
Indexable
#include<bits/stdc++.h> #define FastIO ios_base::sync_with_stdio(0);cin.tie(0),cout.tie(0) #define pb push_back #define mp make_pair #define mem(x,i) memset(x,i,sizeof(x)) #define ff first #define ss second #define all(x) x.begin(),x.end() #define fileout freopen("output.txt","w",stdout) #define filein freopen("input.txt","r",stdin) #define w(x) cout << (#x) << " is " << x << "\n" ; #define mod 1000000007 #define INF 1000000000 #define INF18 1e18 #define for1(i,n) for( int i = 1 ; i<=n ; i++ ) #define for0(i,n) for( int i = 0 ; i<n ; i++ ) typedef long long ll; const char nl = '\n'; using namespace std; int main() { FastIO ; int maxTime = 1000; int done = 0; // example1 int n = 5; int burst[] = {6,2,8,3,4}; int rem[] = {6,2,8,3,4}; int arr[] = {2,5,1,0,4}; int wait[] = {0,0,0,0,0}; // //example2 // int n = 3; // int burst[] = {6,9,6}; // int rem[] = {5,9,6}; // int arr[] = {0,3,6}; // int wait[] = {0,0,0}; for( int timer = 1 ; timer <= maxTime ; timer++ ) { int pid = -1; int remain = 100000; //finding the lowest remaining time process whose arrival time < current time for( int j = 0 ; j < n ; j++ ) { if( arr[j] < timer ) { if( rem[j] < remain && rem[j] != 0 ) { remain = rem[j]; pid = j; } } } //Upadting the waiting time of unfinished process whose arrival time < current time for( int j = 0 ; j < n ; j++ ) { if( j != pid ) { if( rem[j] != 0 && arr[j] < timer ) { wait[j]++; } } } if( pid != -1 ) { cout<<timer<<" P"<<pid+1<<nl; rem[pid]--; if( rem[pid] == 0 ) { done++; if(done == n ) { break; } } } else { cout<<timer<<" NO"<<nl; } } int avg_waiting = 0; int turn_time = 0; cout<<"Pro"<<" "<<"Burst"<<" "<<"Arr"<<" "<<"Wait"<<" "<<"Turn_T"<<nl; for( int i = 0 ; i < n ; i++ ) { avg_waiting += wait[i]; turn_time += burst[i]+wait[i]; cout<<i<<" "<<burst[i]<<" "<<arr[i]<<" "<<wait[i]<<" "<<burst[i]+wait[i]<<nl; } cout<<"Average Waiting time : "<<(double)avg_waiting/n<<nl; cout<<"Average Turn Around time : "<<(double)turn_time/n<<nl; return 0; }
Editor is loading...