Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. import java.io.*;
  2. //import java.util.ArrayList;
  3. //import java.util.List;
  4.  
  5.  
  6. class Row {
  7. Row(int time, int machine, Row earlRow){
  8. this.earlRow = earlRow;
  9. if(earlRow != null)
  10. earlRow.nextRow = this;
  11. this.time = time;
  12. this.machine = machine;
  13. }
  14. private int time;
  15. private int machine;
  16. private int start;
  17. private Row nextRow;
  18. private Row earlRow;
  19. public void setStart(int start){
  20. this.start = start;
  21. }
  22. public int getTime(){
  23. return time;
  24. }
  25. public int getStart(){
  26. return start;
  27. }
  28. public int getStop(){
  29. return start + time;
  30. }
  31. public int getMachine(){
  32. return machine;
  33. }
  34. public void setNextRow(Row nextRow){
  35. this.nextRow = nextRow;
  36. }
  37. public Row getNextRow(){
  38. return nextRow;
  39. }
  40. }
  41.  
  42. class Data {
  43. public int m;
  44. public int n;
  45. Row[][] tasks;
  46. public void read() {
  47. BufferedReader odczyt = new BufferedReader(new InputStreamReader(System.in));
  48. try{
  49. String[] x = odczyt.readLine().split(" ");
  50. n = Integer.parseInt(x[0]); //number of table
  51. m = Integer.parseInt(x[1]); //number of machines
  52. tasks = new Row[n][3];
  53. for(int i = 0; i < n; i++) {
  54. x = odczyt.readLine().split(" ");
  55. for(int j = 0; j < m; j++){
  56. if(tasks[i][0] == null){
  57. tasks[i][0] = new Row(Integer.parseInt(x[j*2+1]), Integer.parseInt(x[j*2]), null);
  58. tasks[i][1] = tasks[i][0];
  59. }
  60. else{
  61. Row nr = new Row(Integer.parseInt(x[(j*2)+1]), Integer.parseInt(x[j*2]), tasks[i][1]);
  62. tasks[i][1].setNextRow(nr);
  63. tasks[i][1] = nr;
  64. }
  65. }
  66. }
  67. odczyt.close();
  68. }
  69. catch(IOException ioe){
  70. System.out.println("Problem z odczytem danych!");
  71. System.exit(1);
  72. }
  73. }
  74.  
  75. public void print() {
  76. System.out.println("Tabela");
  77. System.out.println(m + " " + n);
  78. for(int i = 0; i < n; i++) {
  79. Row x = tasks[i][0];
  80. System.out.print(x.getMachine() + " " + x.getTime() + " ");
  81. do{
  82. x = x.getNextRow();
  83. System.out.print(x.getMachine() + " " + x.getTime() + " ");
  84. }while(x.getNextRow() != null);
  85. System.out.println();
  86. }
  87. }
  88. }
  89.  
  90. class Solve{
  91. Data data;
  92. String[] resul;
  93. Row[][] tasks;
  94. int[] table;
  95. Solve(){
  96.  
  97. }
  98. private int work(Row act, int i, int pom){
  99. if(pom==-1){
  100. act.setStart(tasks[i][2].getStop());
  101. }
  102. else{
  103. act.setStart(table[act.getMachine()]);
  104. }
  105. table[act.getMachine()] = act.getStop();
  106. if(resul[i] != "") resul[i] = resul[i] + " " + act.getStart();
  107. else resul[i] = act.getStart() + "";
  108. tasks[i][2] = act;
  109. pom+=2;
  110. return pom;
  111. }
  112. public void simple(){
  113. data = new Data();
  114. data.read();
  115. tasks = data.tasks;
  116. int n = data.n;
  117. int m = data.m;
  118. resul = new String[n];
  119. for(int i = 0; i < n; i++) resul[i] = "";
  120. table = new int[m];
  121.  
  122. int pom = 1;
  123. while(pom != -2){
  124. if(pom == 0) pom = -1;
  125. else if(pom == -1) pom = -2;
  126. else pom = 0;
  127. for(int i = 0; i < n; i++){
  128. if(tasks[i][2] == null) {
  129. pom = work(tasks[i][0], i, pom);
  130. }
  131. else if(tasks[i][2].getNextRow() != null){
  132. if(tasks[i][2].getStop() <= table[tasks[i][2].getNextRow().getMachine()] || pom == -1)
  133. pom = work(tasks[i][2].getNextRow(), i, pom);
  134. }
  135. }
  136. }
  137. }
  138. public void print(){
  139. for(int i = 0; i < data.n; i++){
  140. System.out.println(resul[i]);
  141. }
  142. }
  143.  
  144. }
  145.  
  146.  
  147.  
  148.  
  149. class JobShop {
  150. public static void main(String args[]){
  151. Solve sol = new Solve();
  152. sol.simple();
  153. sol.print();
  154. }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement