Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.12 KB | None | 0 0
  1.  
  2. package hashcodepractice.qualification;
  3.  
  4. import java.io.*;
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  7. import java.util.Collections;
  8. import java.util.HashMap;
  9. import java.util.Map;
  10. import java.util.Scanner;
  11.  
  12.     class Library{
  13.        
  14.         private long libID,book_num,lib_day,shift_p_day;
  15.         private long[] book_list,scorelist;
  16.  
  17.     public Library(long libID,long book_num, long lib_day, long shift_p_day, long[] book_list, long[] scorelist) {
  18.         this.libID = libID;
  19.         this.book_num = book_num;
  20.         this.lib_day = lib_day;
  21.         this.shift_p_day = shift_p_day;
  22.         this.book_list = book_list;
  23.         this.scorelist = scorelist;
  24.     }
  25.  
  26.     public long getBook_num() {
  27.         return book_num;
  28.     }
  29.  
  30.     public long getLib_day() {
  31.         return lib_day;
  32.     }
  33.  
  34.     public long getShift_p_day() {
  35.         return shift_p_day;
  36.     }
  37.  
  38.     public long[] getBook_list() {
  39.         return book_list;
  40.     }
  41.  
  42.     public long getLibID() {
  43.         return libID;
  44.     }
  45.  
  46.     public long[] getScorelist() {
  47.         return scorelist;
  48.     }
  49.    
  50.        
  51.            
  52.            
  53.     }
  54.  
  55. public class BookLib {
  56.    
  57.     public static void main(String[] args) throws Exception {
  58.         File ina_file=new File("in/a_example.txt");
  59.         File inb_file=new File("in/b_read_on.txt");
  60.         File inc_file=new File("in/c_incunabula.txt");
  61.         File ind_file=new File("in/d_tough_choices.txt");
  62.         File ine_file=new File("in/e_so_many_books.txt");
  63.         File inf_file=new File("in/f_libraries_of_the_world.txt");
  64.         //BufferedReader bin=new BufferedReader(new FileReader(in_file));
  65.         Scanner sin=new Scanner(inc_file);
  66.          File outputfile=new File("out/cc.txt");
  67.         //book, lib, day
  68.         long total_book=sin.nextLong();
  69.         long total_lib=sin.nextLong();
  70.         long total_day=sin.nextLong();
  71.         long[] bookScore=new long[(int)total_book];
  72.         for (long i = 0; i < total_book; i++) {
  73.             bookScore[(int)i]=sin.nextLong();// score of books (1 2 3 6 5 4)
  74.         }
  75.        
  76.         //for lib
  77.         ArrayList<Library> lib_list=new ArrayList<>();
  78.        
  79.         for (long i = 0; i < total_lib; i++) {//per library
  80.             long lBook=sin.nextLong();//5
  81.             long lDay=sin.nextLong();//2
  82.             long lShift=sin.nextLong();//2
  83.             //this lib book list
  84.             long[] books=new long[(int)lBook];
  85.             long[] scores=new long[(int)lBook];
  86.             for (int j = 0; j < lBook; j++) {
  87.                 //0 1 2 3 4 5->indx
  88.                 //1 2 3 6 5 4->scr
  89.                 //1   3 6   4
  90.                 int book=sin.nextInt();
  91.                 books[j]=book;//0 2 3 5
  92.                 //System.out.println("book="+book+" score="+bookScore[book]);
  93.                 scores[j]=bookScore[book];
  94.             }
  95.            
  96.             Library ob=new Library(i,lBook, lDay, lShift,books,scores);
  97.             lib_list.add(ob);
  98.         }
  99.         /*
  100.         6 2 7
  101.         1 2 3 6 5 4
  102.         5 2 2
  103.         0 1 2 3 4
  104.         4 3 1
  105.         0 2 3 5
  106.         */
  107.         //processss=====================================
  108.        
  109.        
  110.         PrintWriter out=new PrintWriter(outputfile);
  111.         // libraries will be signed up for scanning.
  112.  
  113.         long singeduplibCount=0;
  114.         long lnum=0;
  115.         long totalsignup=0;
  116.         while(totalsignup<=total_day){// 0<5
  117.             if(lib_list.size()>lnum){
  118.                 long signupday=lib_list.get((int)lnum).getLib_day();
  119.                 totalsignup+=signupday;
  120.                 singeduplibCount++;
  121.                 lnum++;  
  122.             }else{
  123.                 break;
  124.             }
  125.         }
  126.        
  127.        
  128.         out.println((singeduplibCount)+"");
  129.         //System.out.println("total day="+total_day);
  130.         System.out.println("totalLib="+(singeduplibCount));    //line 111111111111111111111111
  131.             //selected libray
  132.            
  133.         long singeduplibCount_=0;
  134.         int lnum_=0;
  135.         long totalsignup_=0;
  136.         while(totalsignup_<=total_day){// 0<5
  137.             if(lib_list.size()>lnum_){
  138.                 long signupday=lib_list.get(lnum_).getLib_day();
  139.                 totalsignup_+=signupday;
  140.                 printBookList(out,lib_list.get(lnum_),total_day);
  141.                
  142.                 singeduplibCount_++;
  143.                 lnum_++;  
  144.             }else{
  145.                 break;
  146.             }
  147.         }    
  148.            
  149.            
  150.        
  151. //        int sumofSignupday=0;
  152. //        
  153. //        for (int i = 0; i < (singeduplibCount); i++) {
  154. //            Library libs=lib_list.get(i);
  155. //            System.out.println("ilb num: "+libs.getLibID()+",books num="+libs.getBook_list().length+"");
  156. //            sumofSignupday+=libs.getLib_day();
  157. //            int myday=total_day-sumofSignupday;
  158. //            System.out.println("sumofSignupday="+sumofSignupday+" ,signup="+libs.getLib_day()+" myday="+myday);
  159. //            System.out.println("abailty="+(myday*libs.getShift_p_day()));
  160. //        
  161. //        }
  162. //        
  163.        
  164.        
  165. //       for (int i = 0; i < (singeduplibCount); i++) {
  166. //            
  167. //            int tmp2_totalday=total_day-sumofSignupday;
  168. //            //System.out.println("sumofSignupday="+sumofSignupday+" we get="+tmp2_totalday);
  169. //            Library libs=lib_list.get(i);
  170. //            
  171. //            if(tmp2_totalday>=0){
  172. //                tmp2_totalday-=libs.getLib_day();//remove the sign day
  173. //                sumofSignupday+=libs.getLib_day();
  174. //                System.out.println("lib number: "+libs.getLibID());
  175. //                int perday=libs.getShift_p_day();
  176. //                //System.out.println("perday+"+perday);
  177. //                int bokks=(tmp2_totalday)*perday;//
  178. //                
  179. //                out.println(libs.getLibID()+" "+bokks);
  180. //                
  181. //                //ArrayList<Map<Integer,Integer>> allbookRef=new ArrayList<>();
  182. //                
  183. //                int[] blist=libs.getBook_list();
  184. ////                int[] scrs=libs.getScorelist();
  185. ////                for (int j = 0; j < blist.length; j++) {
  186. ////                    Map<Integer,Integer> bookref=new HashMap<>();
  187. ////                    bookref.put(scrs[j],blist[j]);
  188. ////                    allbookRef.add(bookref);
  189. ////                }
  190. ////                Arrays.sort(scrs);
  191. ////               //( 3 2 1 0 )
  192. ////                // 0 2 3 5 ->bk
  193. ////                // 1 3 6 4 ->sr
  194. //              
  195. //                for (int j = 0; j < bokks; j++) {
  196. //                    out.print(""+blist[j]+" ");
  197. //                }
  198. //                out.println();
  199. //                
  200. //                
  201. //            }else{
  202. //                break;
  203. //            }
  204. //            
  205. //        }
  206.         out.close();
  207.        
  208.            
  209.        
  210.     }
  211.    
  212.    
  213.    
  214.    
  215.    
  216.  
  217.     private static void printBookList(PrintWriter out,Library library,long totalD) {
  218.         long booklistsize=library.getBook_list().length-1;//0 1 2 3 4
  219.         long availDay=totalD-library.getLib_day();
  220.         System.out.println("total day="+totalD+" he need="+library.getLib_day()+"=="+availDay+" shift="+library.getShift_p_day()+"gun="+(availDay*(library.getShift_p_day())));
  221.        
  222.         long[] booklist=library.getBook_list();
  223.         long day=availDay*library.getShift_p_day();
  224.         long totalbookscanned=0;
  225.         ArrayList<Long> scanned=new ArrayList<>();
  226.        
  227.         System.out.println(library.getLibID()+" lib has="+ booklistsize+ " books"+", availday="+day+" ,do_per_day"+library.getShift_p_day());
  228.        
  229.         for (int j = 0; j < day; j++) {// 0 1 2 3 4 5 6 7 8 9
  230.             //5,6
  231.             if(booklistsize>=0){
  232.                 scanned.add(booklist[(int)booklistsize]);
  233.                 totalbookscanned++;
  234.                 booklistsize--;
  235.             }else{
  236.                 break;
  237.             }
  238.         }
  239.        
  240.          out.println(""+library.getLibID()+" "+totalbookscanned);
  241.          
  242.          
  243.          for (int i = 0; i < scanned.size(); i++) {
  244.             out.print(scanned.get(i)+" ");
  245.          }
  246.          out.println();
  247.        
  248.     }
  249.    
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement