Advertisement
AndresRicardoTorres

FairWorkload

Sep 9th, 2011
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.08 KB | None | 0 0
  1. public class FairWorkload {
  2.     static int[] carpetas;
  3.     static int trabajadores;
  4.  
  5.     public int getMostWork(int[] folders, int workers) {
  6.         int res = 0;
  7.         int mayor=0;
  8.         carpetas = folders;
  9.         trabajadores = workers;
  10.         int suma = 0;
  11.         for (int i = 0; i < folders.length; i++){
  12.             suma += folders[i];
  13.             if(folders[i] > mayor)
  14.                 mayor = folders[i];
  15.         }
  16.  
  17.         for (int i = mayor; i <= suma; i++) {
  18.             if (check(i+1)) {
  19.                 res = i+1;
  20.                 break;
  21.             }          
  22.         }
  23.         return res-1;
  24.     }
  25.  
  26.     public static boolean check(int mayor) {
  27.         int carpeta = 0;
  28.         for (int i = 0; i < trabajadores; i++) {
  29.             int suma = 0;
  30.             while (carpeta < carpetas.length) {
  31.                 if (suma + carpetas[carpeta] < mayor) {
  32.                     suma += carpetas[carpeta];
  33.                     carpeta++;
  34.                 } else {                   
  35.                     break;
  36.                 }
  37.             }
  38.         }
  39.         if (carpeta < carpetas.length)
  40.             return false;
  41.         return true;
  42.     }
  43.  
  44.     // BEGIN CUT HERE
  45.     public static void main(String[] args) {
  46.         try {
  47.             eq(0, (new FairWorkload()).getMostWork(new int[] { 10, 20, 30, 40, 50, 60, 70, 80, 90 }, 3), 170);
  48.             eq(1, (new FairWorkload()).getMostWork(new int[] { 10, 20, 30, 40, 50, 60, 70, 80, 90 }, 5), 110);
  49.             eq(2, (new FairWorkload()).getMostWork(new int[] { 568, 712, 412, 231, 241, 393, 865, 287, 128, 457, 238, 98, 980, 23, 782 }, 4), 1785);
  50.             eq(3, (new FairWorkload()).getMostWork(new int[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1000 }, 2), 1000);
  51.             eq(4, (new FairWorkload()).getMostWork(new int[] { 50, 50, 50, 50, 50, 50, 50 }, 2), 200);
  52.             eq(5, (new FairWorkload()).getMostWork(new int[] { 1, 1, 1, 1, 100 }, 5), 100);
  53.             eq(6, (new FairWorkload()).getMostWork(new int[] { 950, 650, 250, 250, 350, 100, 650, 150, 150, 700 }, 6), 950);
  54.             eq(7, (new FairWorkload()).getMostWork(new int[] {669, 331}, 1), 1000);        
  55.         } catch (Exception exx) {
  56.             System.err.println(exx);
  57.             exx.printStackTrace(System.err);
  58.         }
  59.     }
  60.  
  61.     private static void eq(int n, int a, int b) {
  62.         if (a == b)
  63.             System.err.println("Case " + n + " passed.");
  64.         else
  65.             System.err.println("Case " + n + " failed: expected " + b + ", received " + a + ".");
  66.     }
  67.     // END CUT HERE
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement