tarunreddy1018

Untitled

Oct 20th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.28 KB | None | 0 0
  1. import java.io.*;
  2.  
  3. public class Main
  4. {
  5.     private static String findCount(int startTime,long bitCount,long nibbleCount,long byteCount,int time)
  6.     {
  7.         int i = startTime;
  8.  
  9.         while(i < time)
  10.         {
  11.             if(bitCount != 0)
  12.             {
  13.                 if((i+2) < time)
  14.                 {
  15.                     nibbleCount = bitCount;
  16.                     bitCount = 0;
  17.                     i += 2;
  18.                 }
  19.                 else
  20.                 {
  21.                     break;
  22.                 }
  23.             }
  24.             else if(nibbleCount != 0)
  25.             {
  26.                 if((i+8) < time)
  27.                 {
  28.                     byteCount = nibbleCount;
  29.                     nibbleCount = 0;
  30.                     i += 8;
  31.                 }
  32.                 else
  33.                 {
  34.                     break;
  35.                 }
  36.             }
  37.             else if(byteCount != 0)
  38.             {
  39.                 if((i+16) < time)
  40.                 {
  41.                     bitCount = 2*byteCount;
  42.                     byteCount = 0;
  43.                     i += 16;
  44.                 }
  45.                 else
  46.                 {
  47.                     break;
  48.                 }
  49.             }
  50.         }
  51.  
  52.         return (bitCount + " " + nibbleCount + " " + byteCount);
  53.     }
  54.  
  55.     private static String findCountOptimized(int time)
  56.     {
  57.         int blockSize = 2 + 8 + 16;
  58.  
  59.         int blocks = time/blockSize;
  60.         int remaining = time%blockSize;
  61.  
  62.         if(remaining == 0)
  63.         {
  64.             blocks--;
  65.         }
  66.  
  67.         int startTime = (blocks*blockSize);
  68.  
  69.         return findCount(startTime,(long)Math.pow(2,blocks),0,0,time);
  70.     }
  71.  
  72.     public static void main(String[] args) throws IOException
  73.     {
  74.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  75.         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
  76.         StringBuilder outputString = new StringBuilder();
  77.  
  78.         int testCases = Integer.parseInt(br.readLine());
  79.  
  80.         while(testCases --> 0)
  81.         {
  82.             int time = Integer.parseInt(br.readLine());
  83.  
  84.             outputString.append(findCountOptimized(time)).append("\n");
  85.         }
  86.  
  87.         bw.write(outputString.toString());
  88.         bw.close();
  89.     }
  90. }
Add Comment
Please, Sign In to add comment