Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- with open('input.txt') as fIn:
- firstLine = fIn.readline().split()
- for i in range(1,int(firstLine[0])+1):
- diskBlocks[str(i)]=[0,int(firstLine[1])]
- for line in fIn:
- lineList=line.rstrip().split()
- while(len(stack) and int(stack[0][0])<int(lineList[REQUESTTIME])):
- fOut.write(' '.join(stack.pop(0)))
- if lineList[TASK]=='R':
- if lineList[ID] not in idToBlockDict:
- disk=str(random.choice(range(1,len(diskBlocks))))
- idToBlockDict[lineList[ID]]=[disk,
- diskBlocks[disk][CURRENTBLOCK],
- lineList[NOOFBLOCKS]] #ADD THE LOCATION OF FILE
- diskBlocks[disk][CURRENTBLOCK]+=int(lineList[NOOFBLOCKS]) #INCREMENT THE DISK BLOCK
- if idToBlockDict[lineList[ID]][DISK]!=lineList[DISK]: #MOVING THE FILE BETWEEN DISKS
- fOut.write(lineList[REQUESTTIME]+' '
- +str(idToBlockDict[lineList[ID]][DISK])+' '
- +str(idToBlockDict[lineList[ID]][BLOCK])+' '
- +str(idToBlockDict[lineList[ID]][NOOFBLOCKS])+' '
- +READ+'\n') #READ FROM THE DISK
- diskBlocks[idToBlockDict[lineList[ID]][DISK]][MAXCAPACITY]+=int(idToBlockDict[lineList[ID]][NOOFBLOCKS]) #INCREASE MAX CAPACITY
- if((diskBlocks[lineList[DISK]][CURRENTBLOCK]+int(lineList[NOOFBLOCKS]))<HARDMAXCAPACITY):
- stack.append([str(int(lineList[REQUESTTIME])+100),
- lineList[DISK],
- str(diskBlocks[lineList[DISK]][CURRENTBLOCK]),
- lineList[NOOFBLOCKS],
- WRITE,
- '\n']) #Add to stack
- idToBlockDict[lineList[ID]]=[lineList[DISK],
- diskBlocks[lineList[DISK]][CURRENTBLOCK],
- lineList[NOOFBLOCKS]] #UPDATE THE LOCATION OF FILE
- diskBlocks[lineList[DISK]][CURRENTBLOCK]+=int(lineList[NOOFBLOCKS]) #INCREMENT WRITING BLOCK
- else: #JUST READ
- fOut.write(lineList[REQUESTTIME]+' '
- +str(idToBlockDict[lineList[ID]][DISK])+' '
- +str(idToBlockDict[lineList[ID]][BLOCK])+' '
- +str(idToBlockDict[lineList[ID]][NOOFBLOCKS])+' '
- +READ+'\n') #READ FROM THE DISK
- elif lineList[TASK]=='W':
- if((diskBlocks[lineList[DISK]][CURRENTBLOCK]+int(lineList[NOOFBLOCKS]))<HARDMAXCAPACITY):
- fOut.write(lineList[REQUESTTIME]+' '
- +lineList[DISK]+' '
- +str(diskBlocks[lineList[DISK]][CURRENTBLOCK])+' '
- +lineList[NOOFBLOCKS]+' '
- +WRITE+'\n') #WRITE TO THE DISK
- if lineList[ID] in idToBlockDict:
- diskBlocks[idToBlockDict[lineList[ID]][DISK]][MAXCAPACITY]+=int(lineList[NOOFBLOCKS]) #INCREASE MAX CAPACITY
- idToBlockDict[lineList[ID]]=[lineList[DISK],
- diskBlocks[lineList[DISK]][CURRENTBLOCK],
- lineList[NOOFBLOCKS]] #UPDATE THE ID
- diskBlocks[lineList[DISK]][CURRENTBLOCK]+=int(lineList[NOOFBLOCKS]) #UPDATE THE WRITING BLOCK
- while(len(stack)):
- fOut.write(' '.join(stack.pop(0)))
- fOut.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement