Skip to content

Instantly share code, notes, and snippets.

@mwangepatrick
Created July 31, 2022 18:20
Show Gist options
  • Save mwangepatrick/f90ca0a101560cf909fef083eae4fd11 to your computer and use it in GitHub Desktop.
Save mwangepatrick/f90ca0a101560cf909fef083eae4fd11 to your computer and use it in GitHub Desktop.
/* 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