#include<stdio.h>

int ReqString[20],nor,nob,start,thm,min[10],max[10];
char direction;

int getmin()
{
int i,j=0;
for(i=0;i<nor;i++)
if(ReqString[i]<=start)
min[j++]=ReqString[i];
return j;
}

int getmax()
{
int i,j=0;
for(i=0;i<nor;i++)
if(ReqString[i]>start)
max[j++]=ReqString[i];
return j;
}

void sortd(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(min[i] < min[j])
{
int t=min[i];
min[i]=min[j];
min[j]=t;
. }
}

void sorta(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(max[i] > max[j])
{
int t=max[i];
max[i]=max[j];
max[j]=t;
}
}

main()
{
int i,j,k;
printf("\nEnter No.of Requests: ");
scanf("%d",&nor);
printf("\nEnter Requests:\n");
for(i=0;i<nor;i++)
{
printf("[%d]=",i);
scanf("%d",&ReqString[i]);
}
printf("\nEnter No.of Cylinders: ");
scanf("%d",&nob);
printf("\nEnter Start Block: ");
scanf("%d",&start);
printf("\nEnter Direction: ");
fflush(stdin);
direction = fgetc(stdin);
j=getmin();
sortd(j);
k=getmax();
sorta(k);
if(direction=='L')
{
for(i=0;i<j;i++)
{
printf("\n%d-%d",start,min[i]);
thm+=start-min[i];
start=min[i];
}
for(i=0;i<k;i++)
{
printf("\n%d-%d",start,max[i]);
thm+=max[i]-start;
start=max[i];
}
}
else if(direction=='R')
{
for(i=0;i<k;i++)
{
printf("\n%d-%d",start,max[i]);
thm+=max[i]-start;
start=max[i];
}
for(i=0;i<j;i++)
{
printf("\n%d-%d",start,min[i]);
thm+=start-min[i];
start=min[i];
}
}
printf("\nTotal Head Movement: %d",thm);
}

Post a Comment

Previous Post Next Post