Advertisement
brsjak

АПС - Компанија - Јуни

Aug 24th, 2019
2,582
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.54 KB | None | 0 0
  1. /*АПС - КОМПАНИЈА
  2. Во една компанија организацијата на работните позиции е дадена како пар (вработен,менаџер) кој кажува кој вработен под кој пенаџер припаѓа. Потребно е да се направи некоја статистика во компанијата и според тоа треба да се даде извештај за тоа колку вработени менаџери од компанијата, колку вработени имаат под нив. Може да се случи менаџер на некои вработени да биде надворешно лице. Еден вработен може да припаѓа на само еден менаџер.
  3.  
  4. ВЛЕЗ: Во првиот ред од влезот е даден бројот на парови кои ќе се внесува N (N<=10000), а во секој нареден ред се дадени паровите (име_вработен, име_менаџер).
  5.  
  6. ИЗЛЕЗ: Листата со имињата на вработените менаџери во компанијата и тоа колку вработени имаат под нивно раководство.
  7.  
  8. ДЕЛУМНО РЕШЕНИЕ: Задачата се смета за делумно решена доколку се поминати 7 тест примери.
  9.  
  10. ЗАБЕЛЕШКА: Задачата треба да се реши со помош на хеширање.
  11.  
  12. МОЈ КОМЕНТАР:Тука задачата е решена на два начини, со OBHT или со Map. Искоментираните линии со код се решението со Map, доколку се одлучите да ја решавате со Map, избришете ги останатите класи. Исто така доколку решавате со Map потребно е да направите мала измена во последниот ред код кај делот со substring т.е. да го смените почетниот индекс на substring-от. Еден менаџер не можи сам на себе да е менаџер па затоа доколку името на вработениот и името на менаџерот (клучот) е исто, тој запис не се додава.
  13.  
  14. */
  15.  
  16. import java.util.*;
  17. import java.io.*;
  18.  
  19. class SLLNode<E> {
  20.     protected E element;
  21.     protected SLLNode<E> succ;
  22.  
  23.     public SLLNode(E elem, SLLNode<E> succ) {
  24.         this.element = elem;
  25.         this.succ = succ;
  26.     }
  27.  
  28.     @Override
  29.     public String toString() {
  30.         return element.toString();
  31.     }
  32. }
  33.  
  34. class MapEntry<K extends Comparable<K>,E> implements Comparable<K> {
  35.     // Each MapEntryobject is a pair consisting of a key (a Comparable // object) and a value (an arbitrary object).
  36.     K key;
  37.     E value;
  38.     public MapEntry(K key, E val) {
  39.         this.key= key;this.value= val;
  40.     }
  41.     public int compareTo(K that) {
  42.     // Compare this map entry to that map entry.@SuppressWarnings("unchecked")
  43.         MapEntry<K,E> other = (MapEntry<K,E>) that;
  44.         return this.key.compareTo(other.key);
  45.     }
  46.     public String toString() {
  47.         return "<" + key + "," + value + ">";
  48.     }
  49. }
  50.  
  51.  
  52. class CBHT<K extends Comparable<K>, E> {
  53.     private SLLNode<MapEntry<K,E>>[] buckets;
  54.     @SuppressWarnings("unchecked")
  55.    
  56.     public CBHT(int m) {
  57.         // Construct an empty CBHT with m buckets.
  58.         buckets = (SLLNode<MapEntry<K,E>>[]) new SLLNode[m];
  59.     }
  60.    
  61.     private int hash(K key) {
  62.         return Math.abs(key.hashCode()) % buckets.length;
  63.     }
  64.    
  65.     public SLLNode<MapEntry<K,E>> search(K targetKey) {
  66.         int b = hash(targetKey);
  67.         for (SLLNode<MapEntry<K,E>> curr= buckets[b]; curr!= null; curr= curr.succ) {
  68.             if (targetKey.equals(((MapEntry<K, E>) curr.element).key))
  69.                 return curr;
  70.         }
  71.         return null;
  72.     }
  73.    
  74.     public void insert(K key, E val) {
  75.         // Insert the entry <key, val> into this CBHT.
  76.         MapEntry<K, E> newEntry= new MapEntry<K, E>(key, val);
  77.         int b = hash(key);
  78.         for (SLLNode<MapEntry<K,E>> curr= buckets[b]; curr!= null; curr= curr.succ) {
  79.             if (key.equals(((MapEntry<K, E>) curr.element).key)) {
  80.             // Make newEntryreplace the existing entry ...
  81.             curr.element= newEntry;return;
  82.             }
  83.         }
  84.         buckets[b] = new SLLNode<MapEntry<K,E>>(newEntry, buckets[b]);
  85.     }
  86.    
  87.     public void delete(K key) {
  88.         int b = hash(key);
  89.         for (SLLNode<MapEntry<K,E>> pred= null, curr= buckets[b]; curr!=null; pred=curr, curr=curr.succ) {
  90.             if (key.equals(((MapEntry<K,E>) curr.element).key)) {
  91.                 if(pred==null) {
  92.                     buckets[b] = curr.succ;
  93.                 }
  94.                 else {
  95.                     pred.succ=curr.succ;
  96.                 }
  97.                 return;
  98.             }
  99.         }
  100.     }
  101.     //mora da se overridne toString
  102.    
  103.     public String toString() {
  104.        
  105.         String temp = "";
  106.        
  107.        
  108.         for(int i=0;i<buckets.length;i++) {
  109.  
  110.             for(SLLNode<MapEntry<K, E>> curr = buckets[i]; curr!=null; curr=curr.succ) {
  111.                 temp+=curr.element.key.toString() + " " + curr.element.value.toString()+" ";
  112.             }
  113.         }
  114.        
  115.         return temp;
  116.     }
  117. }
  118.  
  119. public class Company {
  120.  
  121.     public static void main(String[] args) throws NumberFormatException, IOException {
  122.         // TODO Auto-generated method stub
  123.         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  124.         int n = Integer.parseInt(in.readLine());
  125.        
  126.         //Map<String, Integer> table = new HashMap<String, Integer>(n*2+1);
  127.        
  128.         CBHT<String, Integer> table = new CBHT<String,Integer>(n*2+1);
  129.        
  130.         for(int i=0;i<n;i++) {
  131.             String line = in.readLine();
  132.             String [] niza = line.split("\\,");
  133.            
  134.             String vraboten = niza[0];
  135.             String manager = niza[1];
  136.  
  137.            
  138.              SLLNode<MapEntry<String, Integer>> node = table.search(manager);
  139.        
  140.            
  141.             if(node!=null) {
  142.                
  143.                 String kluc = node.element.key;
  144.                
  145.                 //System.out.println("KLUC: "+kluc);
  146.                 //System.out.println("VRABOTEN: "+vraboten);
  147.                
  148.                 if(!kluc.equals(vraboten)) {
  149.                     //System.out.println("KLUC!=VRABOTEN!");
  150.                     int temp = node.element.value;
  151.                     ++temp;
  152.                     table.insert(manager, temp);
  153.                 } else {
  154.                    
  155.                 }
  156.                
  157.             } else {
  158.                
  159.                 table.insert(manager, 1);
  160.                
  161.             }
  162.             /*
  163.             if(!table.containsKey(manager)) {
  164.                 table.put(manager, 1);
  165.             } else {
  166.                
  167.                 Set<String> keys = table.keySet();
  168.                
  169.                 int flag=1;
  170.                
  171.                 for(String key : keys) {
  172.                     if(key.equals(vraboten)) {
  173.                         flag=0;
  174.                     }
  175.                 }
  176.                
  177.                 if(flag==1) {
  178.                     int temp = table.get(manager);
  179.                     table.put(manager, temp+1);
  180.                    
  181.                 }
  182.                
  183.             }
  184.         */
  185.         }
  186.        
  187.         String out = table.toString();
  188.         System.out.println(out.substring(0,out.length()-1));
  189.     }
  190.  
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement