Cod sursa(job #1430778)

Utilizator Florea_Anda_Madalina_321CBFlorea Anda-Madalina Florea_Anda_Madalina_321CB Data 8 mai 2015 19:58:03
Problema Cautare binara Scor 0
Compilator java Status done
Runda Arhiva educationala Marime 3.21 kb
//package pregTest;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;

class Intrebare{
	private int comanda;
	private int conditie;
	public int getComanda() {
		return comanda;
	}
	public void setComanda(int comanda) {
		this.comanda = comanda;
	}
	public int getConditie() {
		return conditie;
	}
	public void setConditie(int conditie) {
		this.conditie = conditie;
	}
	public Intrebare(int comanda, int conditie) {
		super();
		this.comanda = comanda;
		this.conditie = conditie;
	}
	
}

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n = 0 ;
		int sir[] = null ;
		int m = 0 ;
		ArrayList<Intrebare> q = null ;
		try {
			Scanner fileScanner = new Scanner(new FileInputStream("cautbin.in"));
			n = fileScanner.nextInt();
			sir = new int[n];
			for ( int i = 0; i < n ;i++){
				sir[i] = fileScanner.nextInt();
			}
			m = fileScanner.nextInt();
			q= new ArrayList<Intrebare>(m);
			for (int i = 0 ; i<m ; i++){
				int prim = fileScanner.nextInt();
				int sec= fileScanner.nextInt();
				Intrebare q1 = new Intrebare(prim,sec);
				q.add(i, q1);
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		int r[] = new int[m];
		for(int i = 0 ; i<m ; i++){
			if(q.get(i).getComanda() == 0){
				 r[i] = cautaBinar0(sir,0,n,q.get(i).getConditie());
				//System.out.println(r[i]);
			}
			if(q.get(i).getComanda() == 1){
				 r[i] = cautaBinar1(sir,0,n,q.get(i).getConditie());
				//System.out.println(r[i]);
			}
			if(q.get(i).getComanda() == 2){
				 r[i] = cautaBinar2(sir,0,n,q.get(i).getConditie());
				//System.out.println(r[i]);
			}
		try {
			PrintWriter writer = new PrintWriter("cautbin.out");
			for(int j = 0 ;j<m ; j++){
				writer.write(String.valueOf(r[j])+"\n");
			}
			writer.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
			
		}
		
		
	}

	private static int cautaBinar2(int[] sir, int low, int upper, int conditie) {
		// TODO Auto-generated method stub
		int mid = low+(upper-low)/2;
		if(low == upper) return mid;
			
		if(sir[mid] <conditie) return cautaBinar1(sir,mid+1,upper,conditie);
		else return cautaBinar1(sir,low,mid-1,conditie);
		
	}

	private static int cautaBinar1(int[] sir, int low, int upper, int conditie) {
		// TODO Auto-generated method stub
		int mid = low+(upper-low)/2;
		if(low == upper) return mid+1;
			
		if(sir[mid] <= conditie) return cautaBinar1(sir,mid+1,upper,conditie);
		else return cautaBinar1(sir,low,mid-1,conditie);
		
		
	}

	private static int cautaBinar0(int[] sir, int low, int upper,int conditie) {
		if(low > upper) return -1;
		int mid = low+(upper-low)/2;
		if(sir[mid] == conditie) {
				if(mid < cautaBinar0(sir,mid+1,upper,conditie))
					return cautaBinar0(sir,mid+1,upper,conditie);
				else return mid+1;
		}
		else if(sir[mid] < conditie) return cautaBinar0(sir,mid+1,upper,conditie);
		else return cautaBinar0(sir,low,mid-1,conditie);
		
		// TODO Auto-generated method stub
	}
		
	}