Advertisement
dzocesrce

[APS] Fair Distribution

Aug 27th, 2023
411
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.90 KB | None | 0 0
  1. // 2023 prv kolokvium
  2. // difficulty level: HARD AF;
  3.  
  4. import java.util.NoSuchElementException;
  5. import java.util.Scanner;
  6.  
  7. public class FerRaspredelba
  8. {
  9.     public static void raspredeli(SLL<Integer> original,SLL<SLL<Integer>> list_of_lists) {
  10.         int length= original.length();
  11.         int kolicnik= 1+length/10;
  12.         int ostatok= length%10;
  13.         int front=0,rear=0;
  14.         SLLNode<Integer> temp= original.getFirst();
  15.         if(ostatok!=0){
  16.             while(rear<ostatok) {
  17.                 SLL<Integer> temp3= new SLL<Integer>();
  18.                 while (front < kolicnik) {
  19.                     temp3.insertLast(temp.element);
  20.                     front++;
  21.                     temp = temp.succ;
  22.                     if(front==kolicnik){
  23.                         list_of_lists.insertLast(temp3);
  24.                         break;
  25.                     }
  26.                 }
  27.                 rear++;
  28.                 front = 0;
  29.             }
  30.             front=0;
  31.             rear=0;
  32.             while(rear<10-ostatok){
  33.                 SLL<Integer> temp3= new SLL<Integer>();
  34.                 while (front < kolicnik-1) {
  35.                     temp3.insertLast(temp.element);
  36.                     front++;
  37.                     temp = temp.succ;
  38.                     if(front==kolicnik-1){
  39.                         list_of_lists.insertLast(temp3);
  40.                         break;
  41.                     }
  42.                 }
  43.                 rear++;
  44.                 front = 0;
  45.             }
  46.         }
  47.         else{
  48.             kolicnik= length/10;
  49.             while(rear<10){
  50.                 SLL<Integer> temp3= new SLL<Integer>();
  51.                 while (front < kolicnik) {
  52.                     temp3.insertLast(temp.element);
  53.                     front++;
  54.                     temp = temp.succ;
  55.                     if(front==kolicnik){
  56.                         list_of_lists.insertLast(temp3);
  57.                         break;
  58.                     }
  59.                 }
  60.                 rear++;
  61.                 front = 0;
  62.             }
  63.         }
  64.  
  65.     }
  66.     public static void main(String[] args)
  67.     {
  68.         Scanner input = new Scanner(System.in);
  69.         SLL<SLL<Integer>> list_of_lists= new SLL<SLL<Integer>>();
  70.         SLL<Integer> original_list= new SLL<Integer>();
  71.         int n= Integer.parseInt(input.nextLine());
  72.         String[] broevi = input.nextLine().split("\\s+");
  73.         for(int i=0;i<n;i++)
  74.         {
  75.             original_list.insertLast(Integer.parseInt(broevi[i]));
  76.         }
  77.         raspredeli(original_list,list_of_lists);
  78.         SLLNode<SLL<Integer>> temp= list_of_lists.getFirst();
  79.         SLLNode<Integer> temp2= temp.element.getFirst();
  80.         System.out.print("[");
  81.         while(temp!=null){
  82.             temp2= temp.element.getFirst();
  83.             while(temp2!=null){
  84.                 if(temp.succ==null&&temp2.succ==null){
  85.                     System.out.print(temp2.element);
  86.                     break;
  87.                 }
  88.                 if(temp2.succ==null){
  89.                     System.out.print(temp2.element+", ");
  90.                     break;
  91.                 }
  92.                 System.out.print(temp2.element+" -> ");
  93.                 temp2=temp2.succ;
  94.             }
  95.             temp=temp.succ;
  96.         }
  97.         System.out.print("]");
  98.     }
  99. }
  100.  
  101. class SLLNode<E>
  102. {
  103.     protected E element;
  104.     protected SLLNode<E> succ;
  105.  
  106.     public SLLNode(E elem, SLLNode<E> succ) {
  107.         this.element = elem;
  108.         this.succ = succ;
  109.     }
  110.  
  111.     @Override
  112.     public String toString() {
  113.         return element.toString();
  114.     }
  115. }
  116.  
  117. class SLL<E> {
  118.     private SLLNode<E> first;
  119.  
  120.     public SLL() {
  121.         // Construct an empty SLL
  122.         this.first = null;
  123.     }
  124.  
  125.     public void deleteList() {
  126.         first = null;
  127.     }
  128.  
  129.     public int length() {
  130.         int ret;
  131.         if (first != null) {
  132.             SLLNode<E> tmp = first;
  133.             ret = 1;
  134.             while (tmp.succ != null) {
  135.                 tmp = tmp.succ;
  136.                 ret++;
  137.             }
  138.             return ret;
  139.         } else
  140.             return 0;
  141.  
  142.     }
  143.  
  144.     @Override
  145.     public String toString() {
  146.         String ret = new String();
  147.         if (first != null) {
  148.             SLLNode<E> tmp = first;
  149.             ret += tmp + " ";
  150.             while (tmp.succ != null) {
  151.                 tmp = tmp.succ;
  152.                 ret += tmp + " ";
  153.             }
  154.         } else
  155.             ret = "Prazna lista!!!";
  156.         return ret;
  157.     }
  158.  
  159.     public void insertFirst(E o) {
  160.         SLLNode<E> ins = new SLLNode<E>(o, first);
  161.         first = ins;
  162.     }
  163.  
  164.     public void insertAfter(E o, SLLNode<E> node) {
  165.         if (node != null) {
  166.             SLLNode<E> ins = new SLLNode<E>(o, node.succ);
  167.             node.succ = ins;
  168.         } else {
  169.             System.out.println("Dadenot jazol e null");
  170.         }
  171.     }
  172.  
  173.     public void insertBefore(E o, SLLNode<E> before) {
  174.  
  175.         if (first != null) {
  176.             SLLNode<E> tmp = first;
  177.             if(first==before){
  178.                 this.insertFirst(o);
  179.                 return;
  180.             }
  181.             //ako first!=before
  182.             while (tmp.succ != before)
  183.                 tmp = tmp.succ;
  184.             if (tmp.succ == before) {
  185.                 SLLNode<E> ins = new SLLNode<E>(o, before);
  186.                 tmp.succ = ins;
  187.             } else {
  188.                 System.out.println("Elementot ne postoi vo listata");
  189.             }
  190.         } else {
  191.             System.out.println("Listata e prazna");
  192.         }
  193.     }
  194.  
  195.     public void insertLast(E o) {
  196.         if (first != null) {
  197.             SLLNode<E> tmp = first;
  198.             while (tmp.succ != null)
  199.                 tmp = tmp.succ;
  200.             SLLNode<E> ins = new SLLNode<E>(o, null);
  201.             tmp.succ = ins;
  202.         } else {
  203.             insertFirst(o);
  204.         }
  205.     }
  206.  
  207.     public E deleteFirst() {
  208.         if (first != null) {
  209.             SLLNode<E> tmp = first;
  210.             first = first.succ;
  211.             return tmp.element;
  212.         } else {
  213.             System.out.println("Listata e prazna");
  214.             return null;
  215.         }
  216.     }
  217.  
  218.     public E delete(SLLNode<E> node) {
  219.         if (first != null) {
  220.             SLLNode<E> tmp = first;
  221.             if(first ==node){
  222.                 return this.deleteFirst();
  223.             }
  224.             while (tmp.succ != node && tmp.succ.succ != null)
  225.                 tmp = tmp.succ;
  226.             if (tmp.succ == node) {
  227.                 tmp.succ = tmp.succ.succ;
  228.                 return node.element;
  229.             } else {
  230.                 System.out.println("Elementot ne postoi vo listata");
  231.                 return null;
  232.             }
  233.         } else {
  234.             System.out.println("Listata e prazna");
  235.             return null;
  236.         }
  237.  
  238.     }
  239.  
  240.     public SLLNode<E> getFirst() {
  241.         return first;
  242.     }
  243.  
  244.     public SLLNode<E> find(E o) {
  245.         if (first != null) {
  246.             SLLNode<E> tmp = first;
  247.             while (tmp.element != o && tmp.succ != null)
  248.                 tmp = tmp.succ;
  249.             if (tmp.element == o) {
  250.                 return tmp;
  251.             } else {
  252.                 System.out.println("Elementot ne postoi vo listata");
  253.             }
  254.         } else {
  255.             System.out.println("Listata e prazna");
  256.         }
  257.         return first;
  258.     }
  259. }
  260. /*
  261. Vlez:
  262. 14
  263. 1 5 2 3 0 6 4 3 7 9 1 4 6 8
  264. Izlez:
  265. [1 -> 5, 2 -> 3, 0 -> 6, 4 -> 3, 7, 9, 1, 4, 6, 8]
  266.  
  267. Vlez:
  268. 20
  269. 1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1
  270. Izlez:
  271. [1 -> 2, 3 -> 4, 5 -> 6, 7 -> 8, 9 -> 10, 10 -> 9, 8 -> 7, 6 -> 5, 4 -> 3, 2 -> 1]
  272. Vlez:
  273. 10
  274. 1 6 0 5 1 6 0 5 1 6
  275. Izlez:
  276. [1, 6, 0, 5, 1, 6, 0, 5, 1, 6]
  277. Vlez:
  278. 32
  279. 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320
  280. Izlez:
  281. [10 -> 20 -> 30 -> 40, 50 -> 60 -> 70 -> 80, 90 -> 100 -> 110, 120 -> 130 -> 140, 150 -> 160 -> 170, 180 -> 190 -> 200, 210 -> 220 -> 230, 240 -> 250 -> 260, 270 -> 280 -> 290, 300 -> 310 -> 320]
  282.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement