Advertisement
Guest User

Untitled

a guest
Nov 12th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.06 KB | None | 0 0
  1. //package vpl2;
  2.  
  3. import java.util.*;
  4. import java.io.*;
  5.  
  6. public class Main {
  7.    
  8.     @SuppressWarnings("unchecked")
  9.     public static void main(String[] args) throws IOException {
  10.         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  11.         //BufferedReader in = new BufferedReader(new FileReader("D:\\Uni\\WS 18-19\\Algorithmendesign\\Code\\src\\vpl2\\NFL17_014_IMDb_ge_8.csv"));
  12.         //BufferedReader in = new BufferedReader(new FileReader("D:\\Uni\\WS 18-19\\Algorithmendesign\\Code\\src\\vpl2\\test.csv"));
  13.         //BufferedReader in = new BufferedReader(new FileReader("D:\\Uni\\WS 18-19\\Algorithmendesign\\Code\\src\\vpl2\\NFL17_187_CS_KoKi_Col.csv"));
  14.        
  15.         //Variables-------------------------------------------------------------
  16.         ArrayList<Movie> movies = new ArrayList<>();
  17.         ArrayList<String[]> indexDatabase = new ArrayList<String[]>();
  18.         //Variables-------------------------------------------------------------
  19.    
  20.         int n = 0; // how many lines of data do we have? -> n
  21.         String line;
  22.         while ( (line = in.readLine()) != null ) {
  23.             String[] data = line.split(";");
  24.             // do something with this line ...
  25.    
  26.             movies.add(new Movie(data, n));
  27.             indexDatabase.add(n, data);
  28.            
  29.             n++;
  30.         }
  31.         in.close();
  32.        
  33.         // sort indexDatabaseProcessed by start time
  34.         movies.sort(Comparator.comparing(o -> o.starttime));
  35.         //movies.forEach(m -> System.out.println(m.index));
  36.        
  37.         //==============================================================================================================
  38.         //=================================== finished defining all needed data structures =============================
  39.         //==============================================================================================================
  40.        
  41.         ArrayList<Movie> perfectList;
  42.         perfectList = getPerfectSchedule(movies);
  43.        
  44.         // Test output
  45.         //System.out.println(jobsActiveAt[0] + " " + jobsActiveAt[632]);
  46.         //System.out.println(C.get(1)[0] + C.get(1)[1]);
  47.         for (Movie element : perfectList) {
  48.             System.out.print(indexDatabase.get(element.index)[0]);
  49.             for (int i = 1; i <= 4; i++) {
  50.                 System.out.print(";" + indexDatabase.get(element.index)[i]);
  51.             }
  52.             System.out.println();
  53.         }
  54.         //System.out.println(indexDatabase.get(0)[5]);
  55.     }
  56.    
  57.     static ArrayList<Movie> getPerfectSchedule(ArrayList<Movie> movies) {
  58.         ArrayList<Movie> perfectSchedule = new ArrayList<>();
  59.         Movie tmp = movies.get(0);
  60.        
  61.         for (int i=0; i<movies.size(); i++) {
  62.             if (i==0) {
  63.                 perfectSchedule.add(tmp);
  64.             }
  65.             else if (movies.get(i).starttime > (perfectSchedule.get(perfectSchedule.size()-1).length)+perfectSchedule.get(perfectSchedule.size()-1).starttime) {
  66.                 if (!checkForDuplicates(movies.get(i), perfectSchedule)) {
  67.                     perfectSchedule.add(movies.get(i));
  68.                 }
  69.             } else {
  70.                 if (movies.get(i).iMDB > perfectSchedule.get(perfectSchedule.size()-1).iMDB) {
  71.                     if (!checkForDuplicates(movies.get(i), perfectSchedule)) {
  72.                         tmp = perfectSchedule.get(perfectSchedule.size()-1);
  73.                         if (movies.get(i).starttime < tmp.starttime+tmp.length) {
  74.                             perfectSchedule.remove(perfectSchedule.size()-1);
  75.                         }
  76.                         perfectSchedule.add(movies.get(i));
  77.                     }
  78.                 }
  79.             }
  80.         }
  81.        
  82.         return perfectSchedule;
  83.     }
  84.    
  85.     static boolean checkForDuplicates(Movie movie, ArrayList<Movie> arrMovie) {
  86.         for (int i=0; i<arrMovie.size(); i++) {
  87.             if (movie.title.equals(arrMovie.get(i).title)) {
  88.                 return true;
  89.             }
  90.         }
  91.         return false;
  92.     }
  93.    
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement