// NM i programmering 2001 // Løsningsforslag til oppgave G // Skrevet av Mildrid Ljosland (mildrid@aitel.hist.no) import java.io.*; import java.util.*; class G { Bridge br; int[] answer; int minimum; G(int a, int b, int n) { if (a>=b) br=new Bridge(a,b,n); else br = new Bridge(b,a,n); answer=new int[n]; } public static void main(String args[]) { try { BufferedReader inFile=new BufferedReader(new FileReader("bridge.in")); PrintWriter outFile=new PrintWriter(new FileWriter("bridge.out")); String line=null; StringTokenizer st=null; int a; while ((a=new Integer((st=new StringTokenizer(inFile.readLine())).nextToken()).intValue())>=0) { int b=new Integer(st.nextToken()).intValue(); int n=new Integer(st.nextToken()).intValue(); G ans=new G(a,b,n); ans.produceAnswer(); ans.reportAnswer(outFile); } inFile.close(); outFile.close(); } catch (Exception e) { System.out.println(e); } } void produceAnswer() { int n=br.noOfBr; int highest=br.heightB; boolean OK=false; double interval=0; minimum=Integer.MAX_VALUE; while (!OK) { highest--; interval=(double)highest/(double)n; for (int i=1;i<=n;i++) { br.brLevels[i]=(int)(i*interval+0.000001); } int thisTry=br.findTotalSteps(); if (thisTry < minimum) { minimum=thisTry; for (int i=0;i=b1 && y>=b1) return (x-b1)+(y-b1); else if (x<=b2 && y<=b2) return (b2-x)+(b2-y); else if (xb2 && yb2) { int t1 = (b1-x)+(b1-y); int t2 = (x-b2)+(y-b2); if (t1=y ) return x-y; else return y-x; } int findTotalSteps() { int sum=0; int bNr=0; for (int i=0;i=brLevels[bNr]) bNr++; for (int j=0;j