Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.32 KB | None | 0 0
  1. Black Friday Problem 2 (2 / 2)
  2. Еден маркет за бела технка одлучил да ги спушти цените на своите производи еден работен петок дури до 80% по повод престојните Божикни празници. Поради оваа промоција јасно им било дека ќе има многу заинтересирани купувачи, па затоа одлучиле да воспостaват ред при влеувањето/излегувањето во маркетот. Купувачите влегуваат според времето на пристигнување. Потребно е да се пронајде колкав е максималниот број на купувачи кои ќе бидат присутни во маркетот. Во првата линија е даден бројот на купувачи кои чекаат да влезат, N. Секоја од наредните линии го означува часот и минутите на доаѓање на купувачот, како и колку време (во минути) ќе се задржи во маркетот, во формат: HH:MM d
  3.  
  4. За да се реализира оваа задача потребно е да се користи соодветна податочна структура со која со најмала сложеност ќе се постигне бараниот резултат. Притоа е обезбедено да не може да се случи во ист момент да има влегување односно излегување од маркетот. Маркетот работи до 23:59.
  5.  
  6. На излез треба да се испечати максималниот број купувачи кои што истовремено ќе бидат присутни во маркетот.
  7.  
  8. Име на класа во Java: BlackFriday
  9.  
  10.  
  11. import java.io.BufferedReader;
  12. import java.io.IOException;
  13. import java.io.InputStreamReader;
  14.  
  15. class Time{
  16.    
  17.         protected int timein;
  18.         protected int timeout;
  19.  
  20.         public Time(int timein, int timeout) {
  21.             this.timein = timein;
  22.             this.timeout = timeout;
  23.         }
  24.         @Override
  25.         public String toString(){
  26.             return this.timeout + "";
  27.         }
  28.    
  29. }
  30.  
  31. class Heap{
  32.    
  33.     private Time elements[];
  34.    
  35.     public Heap(int n){
  36.         elements = new Time[n];
  37.     }
  38.  
  39.    
  40.     int getParent(int i) {
  41.         return (i+1)/2-1;
  42.     }
  43.    
  44.     public Time getAt(int i) {
  45.         return elements[i];
  46.     }
  47.    
  48.     public int left(int i){
  49.         return 2*i+1;
  50.     }
  51.     public int right(int i){
  52.         return 2*i+2;
  53.     }
  54.    
  55.     void setElement(int index, Time elem) {
  56.         elements[index] = elem;
  57.     }
  58.    
  59.     void swap(int i, int j) {
  60.         Time tmp = elements[i];
  61.         elements[i] = elements[j];
  62.         elements[j] = tmp;
  63.     }
  64.    
  65.     void adjust(int i, int n){
  66.           while(i < n){
  67.               int left = this.left(i);
  68.               int right = this.right(i);
  69.               int smallest = i;
  70.               if(left < n&&elements[left].timeout < elements[smallest].timeout)
  71.                   smallest = left;
  72.               if(right < n&&elements[right].timeout < elements[smallest].timeout)
  73.                   smallest = right;
  74.               if(smallest == i)
  75.                   break;
  76.               swap(i,smallest);
  77.               i = smallest;
  78.           }
  79.    
  80.     }
  81.    
  82.     void buildHeap() {
  83.         for (int i=elements.length/2-1;i>=0;i--)
  84.             adjust(i, elements.length);
  85.     }
  86.    
  87.     public void heapSort() {
  88.         int i;
  89.         buildHeap();
  90.         for (i=elements.length;i>1;i--) {
  91.             swap(0, i-1);
  92.             adjust(0, i-1);
  93.         }
  94.     }
  95.     public int max(){
  96.         int br = 1;
  97.         int n = elements.length;                
  98.         int temp = elements[0].timeout;
  99.             for(int i=1;i<n;i++)
  100.                 if(temp > elements[i].timein)
  101.                     br++;
  102.         return br;
  103.     }
  104.    
  105.     public void rotate(){
  106.         int n = elements.length;
  107.         Time[] temp = new Time[n-1];
  108.         for(int i=1;i<n;i++)
  109.             temp[i-1] = elements[i];
  110.         elements = temp;
  111.     }
  112.    
  113.     public int remove(){    
  114.         int max = 0;
  115.         while( elements.length / 2 > 0){
  116.             max = Math.max(max, max());            
  117.             rotate();
  118.             this.buildHeap();
  119.         }    
  120.         return max;
  121.     }
  122.    
  123.  
  124. }
  125. public class BlackFriday {
  126.    public static void main(String[] args) throws IOException {
  127.        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  128.        int N=Integer.parseInt(br.readLine());
  129.        Heap heap=new Heap(N);
  130.        String time;
  131.        int a1,a2;
  132.        String[] parts=new String[2];
  133.        String[] arriveParts=new String[2];
  134.        for(int i=0;i<N;i++) {
  135.            time=br.readLine();
  136.            parts=time.split(" ");
  137.            arriveParts=parts[0].split(":");
  138.            a1=Integer.parseInt(arriveParts[0])*60+Integer.parseInt(arriveParts[1]);
  139.            a2=a1+Integer.parseInt(parts[1]);
  140.            if(a2 > 1439)
  141.                a2 = 1439;
  142.            Time t=new Time(a1,a2);
  143.            heap.setElement(i, t);
  144.        }
  145.        heap.buildHeap();
  146.        System.out.println(heap.remove());
  147.        
  148.        
  149.    }
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement