Untitled
unknown
plain_text
3 years ago
2.8 kB
7
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...