Created
July 31, 2022 18:20
-
-
Save mwangepatrick/f90ca0a101560cf909fef083eae4fd11 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* package whatever; // don't place package name! */ | |
import java.io.*; | |
public class myCode | |
{ | |
public static void main(String[] args) throws java.lang.Exception | |
{ | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
String dataSizeInput = br.readLine(); | |
Integer dataSize = Integer.valueOf(dataSizeInput); | |
String transferSpeedInput = br.readLine(); | |
Integer transferSpeed = Integer.valueOf(transferSpeedInput); | |
String numberOfArchiversInput = br.readLine(); | |
int numberOfArchivers = Integer.valueOf(numberOfArchiversInput); | |
if(numberOfArchivers < 1 || numberOfArchivers > 2 ){ | |
return; | |
} | |
Archiver [] arr = new Archiver [numberOfArchivers]; | |
for(int i = 0; i < numberOfArchivers; i ++) { | |
String [] info = br.readLine().split("\\s+"); | |
arr[i] = new Archiver(Integer.valueOf(info[0]),Integer.valueOf(info[1])); | |
} | |
transferTime(dataSize, transferSpeed, arr); | |
} | |
public static class Archiver { | |
public int compressionRate; | |
public int processingSpeed; | |
public Archiver(int proccSpeed, int compRate) { | |
this.compressionRate = compRate; | |
this.processingSpeed = proccSpeed; | |
} | |
} | |
public static void transferTime(int dataSize, int transferSpeed, Archiver [] archivers){ | |
double time = Double.MAX_VALUE; | |
int index = 0; | |
for(Archiver arch : archivers) { | |
//System.out.println(" Processing Speed: " + arch.processingSpeed + " Compression Rate: " + arch.compressionRate); | |
double compressionSpeed = (double)dataSize/arch.processingSpeed; | |
double transferSp = ((double)dataSize *( (double)arch.compressionRate / 100.0)) / (double)transferSpeed; | |
double uncompressionSpeed = ((double) dataSize *((double) arch.compressionRate) / 100.0) / (double) arch.processingSpeed; | |
double total = compressionSpeed + transferSp + uncompressionSpeed; | |
time = Math.min(time, total); | |
index++; | |
System.out.println(" Archiver no."+index+" will take "+ Math.round(total)); | |
//System.out.print("Zip Speed: " + compressionSpeed + "transferSpeed: " + transferSp + "Unzip speed: " + uncompressionSpeed ); | |
} | |
System.out.println(Math.round(time)); | |
System.out.println("Sending the data uncompressed will take " +dataSize +"/" +transferSpeed+": "+ Math.round(dataSize/transferSpeed)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment