Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package hashcodepractice.qualification;
- import java.io.*;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Scanner;
- class Library{
- private long libID,book_num,lib_day,shift_p_day;
- private long[] book_list,scorelist;
- public Library(long libID,long book_num, long lib_day, long shift_p_day, long[] book_list, long[] scorelist) {
- this.libID = libID;
- this.book_num = book_num;
- this.lib_day = lib_day;
- this.shift_p_day = shift_p_day;
- this.book_list = book_list;
- this.scorelist = scorelist;
- }
- public long getBook_num() {
- return book_num;
- }
- public long getLib_day() {
- return lib_day;
- }
- public long getShift_p_day() {
- return shift_p_day;
- }
- public long[] getBook_list() {
- return book_list;
- }
- public long getLibID() {
- return libID;
- }
- public long[] getScorelist() {
- return scorelist;
- }
- }
- public class BookLib {
- public static void main(String[] args) throws Exception {
- File ina_file=new File("in/a_example.txt");
- File inb_file=new File("in/b_read_on.txt");
- File inc_file=new File("in/c_incunabula.txt");
- File ind_file=new File("in/d_tough_choices.txt");
- File ine_file=new File("in/e_so_many_books.txt");
- File inf_file=new File("in/f_libraries_of_the_world.txt");
- //BufferedReader bin=new BufferedReader(new FileReader(in_file));
- Scanner sin=new Scanner(inc_file);
- File outputfile=new File("out/cc.txt");
- //book, lib, day
- long total_book=sin.nextLong();
- long total_lib=sin.nextLong();
- long total_day=sin.nextLong();
- long[] bookScore=new long[(int)total_book];
- for (long i = 0; i < total_book; i++) {
- bookScore[(int)i]=sin.nextLong();// score of books (1 2 3 6 5 4)
- }
- //for lib
- ArrayList<Library> lib_list=new ArrayList<>();
- for (long i = 0; i < total_lib; i++) {//per library
- long lBook=sin.nextLong();//5
- long lDay=sin.nextLong();//2
- long lShift=sin.nextLong();//2
- //this lib book list
- long[] books=new long[(int)lBook];
- long[] scores=new long[(int)lBook];
- for (int j = 0; j < lBook; j++) {
- //0 1 2 3 4 5->indx
- //1 2 3 6 5 4->scr
- //1 3 6 4
- int book=sin.nextInt();
- books[j]=book;//0 2 3 5
- //System.out.println("book="+book+" score="+bookScore[book]);
- scores[j]=bookScore[book];
- }
- Library ob=new Library(i,lBook, lDay, lShift,books,scores);
- lib_list.add(ob);
- }
- /*
- 6 2 7
- 1 2 3 6 5 4
- 5 2 2
- 0 1 2 3 4
- 4 3 1
- 0 2 3 5
- */
- //processss=====================================
- PrintWriter out=new PrintWriter(outputfile);
- // libraries will be signed up for scanning.
- long singeduplibCount=0;
- long lnum=0;
- long totalsignup=0;
- while(totalsignup<=total_day){// 0<5
- if(lib_list.size()>lnum){
- long signupday=lib_list.get((int)lnum).getLib_day();
- totalsignup+=signupday;
- singeduplibCount++;
- lnum++;
- }else{
- break;
- }
- }
- out.println((singeduplibCount)+"");
- //System.out.println("total day="+total_day);
- System.out.println("totalLib="+(singeduplibCount)); //line 111111111111111111111111
- //selected libray
- long singeduplibCount_=0;
- int lnum_=0;
- long totalsignup_=0;
- while(totalsignup_<=total_day){// 0<5
- if(lib_list.size()>lnum_){
- long signupday=lib_list.get(lnum_).getLib_day();
- totalsignup_+=signupday;
- printBookList(out,lib_list.get(lnum_),total_day);
- singeduplibCount_++;
- lnum_++;
- }else{
- break;
- }
- }
- // int sumofSignupday=0;
- //
- // for (int i = 0; i < (singeduplibCount); i++) {
- // Library libs=lib_list.get(i);
- // System.out.println("ilb num: "+libs.getLibID()+",books num="+libs.getBook_list().length+"");
- // sumofSignupday+=libs.getLib_day();
- // int myday=total_day-sumofSignupday;
- // System.out.println("sumofSignupday="+sumofSignupday+" ,signup="+libs.getLib_day()+" myday="+myday);
- // System.out.println("abailty="+(myday*libs.getShift_p_day()));
- //
- // }
- //
- // for (int i = 0; i < (singeduplibCount); i++) {
- //
- // int tmp2_totalday=total_day-sumofSignupday;
- // //System.out.println("sumofSignupday="+sumofSignupday+" we get="+tmp2_totalday);
- // Library libs=lib_list.get(i);
- //
- // if(tmp2_totalday>=0){
- // tmp2_totalday-=libs.getLib_day();//remove the sign day
- // sumofSignupday+=libs.getLib_day();
- // System.out.println("lib number: "+libs.getLibID());
- // int perday=libs.getShift_p_day();
- // //System.out.println("perday+"+perday);
- // int bokks=(tmp2_totalday)*perday;//
- //
- // out.println(libs.getLibID()+" "+bokks);
- //
- // //ArrayList<Map<Integer,Integer>> allbookRef=new ArrayList<>();
- //
- // int[] blist=libs.getBook_list();
- //// int[] scrs=libs.getScorelist();
- //// for (int j = 0; j < blist.length; j++) {
- //// Map<Integer,Integer> bookref=new HashMap<>();
- //// bookref.put(scrs[j],blist[j]);
- //// allbookRef.add(bookref);
- //// }
- //// Arrays.sort(scrs);
- //// //( 3 2 1 0 )
- //// // 0 2 3 5 ->bk
- //// // 1 3 6 4 ->sr
- //
- // for (int j = 0; j < bokks; j++) {
- // out.print(""+blist[j]+" ");
- // }
- // out.println();
- //
- //
- // }else{
- // break;
- // }
- //
- // }
- out.close();
- }
- private static void printBookList(PrintWriter out,Library library,long totalD) {
- long booklistsize=library.getBook_list().length-1;//0 1 2 3 4
- long availDay=totalD-library.getLib_day();
- System.out.println("total day="+totalD+" he need="+library.getLib_day()+"=="+availDay+" shift="+library.getShift_p_day()+"gun="+(availDay*(library.getShift_p_day())));
- long[] booklist=library.getBook_list();
- long day=availDay*library.getShift_p_day();
- long totalbookscanned=0;
- ArrayList<Long> scanned=new ArrayList<>();
- System.out.println(library.getLibID()+" lib has="+ booklistsize+ " books"+", availday="+day+" ,do_per_day"+library.getShift_p_day());
- for (int j = 0; j < day; j++) {// 0 1 2 3 4 5 6 7 8 9
- //5,6
- if(booklistsize>=0){
- scanned.add(booklist[(int)booklistsize]);
- totalbookscanned++;
- booklistsize--;
- }else{
- break;
- }
- }
- out.println(""+library.getLibID()+" "+totalbookscanned);
- for (int i = 0; i < scanned.size(); i++) {
- out.print(scanned.get(i)+" ");
- }
- out.println();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement