Advertisement
Guest User

Untitled

a guest
May 24th, 2015
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.99 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. /**
  6. * Created by gasper on 5/23/15.
  7. */
  8. public class Izziv10 {
  9.  
  10. public static void main(String[] args){
  11. int itemCount = Integer.parseInt(args[0]);
  12. List<Vozlisce> vozl = new ArrayList<Vozlisce>();
  13. List<Vozlisce> vozlNe = new ArrayList<Vozlisce>();
  14. vozlNe.add(new Vozlisce(0, 0));
  15.  
  16. Scanner s = new Scanner(System.in);
  17.  
  18. for (int i = 0; i < itemCount; i++) {
  19. vozl.add(new Vozlisce(s.nextInt(), 0));
  20. }
  21.  
  22. for (int i = 0; i < itemCount; i++) {
  23. vozl.get(i).setCena(s.nextInt());
  24. }
  25.  
  26. int max = s.nextInt();
  27.  
  28. //printBackPack(vozl);
  29.  
  30. List<Vozlisce> dodamo = new ArrayList<Vozlisce>();
  31.  
  32.  
  33. // 4 2 3 7 5 2 3 9 8
  34.  
  35. for (int i = 0; i < vozl.size(); i++) {
  36.  
  37. //vse od spodi damo gor
  38. List<Vozlisce> tmp = copyVozlisce(vozlNe);
  39. for (int k = 0; k < dodamo.size(); k++) {
  40. int v1 = dodamo.get(k).getVol();
  41. int c1 = dodamo.get(k).getCena();
  42. boolean dodaj = true;
  43. int helper = 0;
  44. for (int j = 0; j < tmp.size(); j++) {
  45.  
  46.  
  47. int v2 = tmp.get(j).getVol();
  48. int c2 = tmp.get(j).getCena();
  49.  
  50.  
  51. if(v1 == v2 && c1 < c2 || c1 == c2 && v2 < v1 || v1 > v2 && c1 <= c2){
  52. dodaj = false;
  53. System.out.printf("Odstranimo (%d, %d)\n", v1, c1);
  54. }else if(dodaj && (v1 == v2 && c1 > c2 || c1 == c2 && v1 < v2 || v1 < v2 && c1 >= c2)){
  55. System.out.printf("Odstranimo (%d, %d)\n", v2, c2);
  56. vozlNe.get(j).setCena(c1);
  57. vozlNe.get(j).setVol(v1);
  58.  
  59. dodaj = false;
  60. // tmp = copyVozlisce(vozlNe);
  61. }
  62.  
  63. helper++;
  64.  
  65. }
  66.  
  67.  
  68.  
  69.  
  70. if(dodaj){
  71. vozlNe.add(new Vozlisce(dodamo.get(k).getVol(), dodamo.get(k).getCena()));
  72. sort(vozlNe);
  73. }
  74.  
  75. }
  76.  
  77.  
  78. //če dodamo
  79. //ne dodamo listu dodaj vse iz dodaj in sortiraj
  80.  
  81. // if(dodamo.size() != 0){
  82. // for (int k = 0; k < dodamo.size(); k++) {
  83. // dodamo.get(k).setCena(dodamo.get(k).getCena()+vozl.get(i).getCena());
  84. // dodamo.get(k).setVol(dodamo.get(k).getVol() + vozl.get(i).getVol());
  85. // }
  86. // }
  87. dodamo.removeAll(dodamo);
  88.  
  89. for (int j = 0; j < vozlNe.size(); j++) {
  90.  
  91. if(vozlNe.get(j).getVol()+vozl.get(i).getVol() <= max){
  92.  
  93. dodamo.add(new Vozlisce(vozlNe.get(j).getVol()+vozl.get(i).getVol(), vozlNe.get(j).getCena() + vozl.get(i).getCena()));
  94. }
  95.  
  96. }
  97.  
  98. // dodamo.add(new Vozlisce(vozl.get(i).getVol(), vozl.get(i).getCena()));
  99. sort(dodamo);
  100. //System.out.println("-----------------ne dodamo------------------");
  101. printBackPack(vozlNe, i);
  102. // System.out.println("-----------------dodamo------------------");
  103. // printBackPack(dodamo, i);
  104.  
  105.  
  106.  
  107.  
  108.  
  109. }
  110.  
  111. // printBackPack(dodamo, 0);
  112.  
  113.  
  114. List<Vozlisce> tmp = copyVozlisce(vozlNe);
  115. for (int k = 0; k < dodamo.size(); k++) {
  116. int v1 = dodamo.get(k).getVol();
  117. int c1 = dodamo.get(k).getCena();
  118. boolean dodaj = true;
  119.  
  120. for (int j = 0; j < tmp.size(); j++) {
  121.  
  122.  
  123. int v2 = tmp.get(j).getVol();
  124. int c2 = tmp.get(j).getCena();
  125.  
  126.  
  127. if(dodaj && (v1 == v2 && c1 < c2 || c1 == c2 && v2 < v1 || v1 > v2 && c1 <= c2)){
  128. dodaj = false;
  129. System.out.printf("Odstranimo (%d, %d)\n", v1, c1);
  130. }else if(dodaj && (v1 == v2 && c1 > c2 || c1 == c2 && v1 < v2 || v1 < v2 && c1 >= c2)){
  131. System.out.printf("Odstranimo (%d, %d)\n", v2, c2);
  132. vozlNe.remove(j);
  133. // tmp = copyVozlisce(vozlNe);
  134.  
  135.  
  136. }
  137.  
  138.  
  139.  
  140. }
  141.  
  142.  
  143.  
  144.  
  145. if(dodaj){
  146. vozlNe.add(new Vozlisce(dodamo.get(k).getVol(), dodamo.get(k).getCena()));
  147. sort(vozlNe);
  148. }
  149.  
  150. }
  151.  
  152. printBackPack(vozlNe, -1);
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160. }
  161.  
  162.  
  163. public static List<Vozlisce> copyVozlisce(List<Vozlisce> vozl){
  164. List<Vozlisce> rtrn = new ArrayList<Vozlisce>();
  165. for (int i = 0; i < vozl.size(); i++) {
  166. rtrn.add(new Vozlisce(vozl.get(i).getVol(), vozl.get(i).getCena()));
  167.  
  168. }
  169.  
  170. return rtrn;
  171. }
  172.  
  173. public static void printBackPack(List<Vozlisce> arr, int st){
  174. if(st > -1) System.out.print(st + ": ");
  175. for (int i = 0; i < arr.size(); i++) {
  176. System.out.printf("(%d, %d) ", arr.get(i).getVol(), arr.get(i).getCena());
  177. }
  178. System.out.println();
  179. }
  180.  
  181.  
  182. public static void sort(List<Vozlisce> arr){
  183. for (int i = 0; i < arr.size()-1; i++) {
  184. for (int j = i+1; j < arr.size(); j++) {
  185. if(arr.get(j).getVol() < arr.get(i).getVol()){
  186. Vozlisce tmp = arr.get(i);
  187. arr.set(i, arr.get(j));
  188. arr.set(j, tmp);
  189. }
  190. }
  191. }
  192. }
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200. }
  201.  
  202. class Vozlisce {
  203. private int vol;
  204. private int cena;
  205.  
  206. public Vozlisce(int v, int c) {
  207. this.vol = v;
  208. this.cena = c;
  209. }
  210.  
  211. public int getVol() {
  212. return vol;
  213. }
  214.  
  215. public void setVol(int vol) {
  216. this.vol = vol;
  217. }
  218.  
  219. public int getCena() {
  220. return cena;
  221. }
  222.  
  223. public void setCena(int cena) {
  224. this.cena = cena;
  225. }
  226.  
  227.  
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement