Rezultati

Up. imeNalogaJezikRezultatČas oddaje
mango-2019 Biodiverziteta Java 100/100OK 09. maj '19 @ 18:44

Test Točke Porabljen spomin Porabljen čas Status
#1 [več] 20/20 84,520 MiB 0,000 s OK
#2 [več] 20/20 92,234 MiB 0,000 s OK
#3 [več] 20/20 86,625 MiB 0,000 s OK
#4 [več] 20/20 87,016 MiB 0,000 s OK
#5 [več] 20/20 84,895 MiB 0,000 s OK

Ocenjevani program (Biodiverziteta.java):
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;

public class Biodiverziteta {
	
	static String prvi;
	static String drugi;
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//		map = new Vector<String>();
		String[] line = br.readLine().split(" ");
		int dolzinaA = Integer.parseInt(line[0]);
		int dolzinaB = Integer.parseInt(line[1]);
		int testi = Integer.parseInt(line[2]);
		prvi = br.readLine();
		drugi = br.readLine();

		int[] rezultati = new int[testi];
		
		Vector<int[]> CharCount = new Vector<int[]>();
		
		int[][] countPrvi = new int[prvi.length()][4];
		int[][] countDrugi = new int[drugi.length()][4];
		
		int cA = 0, cC = 0, cG = 0, cT = 0;
		for(int i = 0; i < prvi.length(); i++) {
			if (prvi.charAt(i) == 'A'){
					cA++;
			}
			else if (prvi.charAt(i) == 'C') {
				cC++;
			}
			else if (prvi.charAt(i) == 'G') {
				cG++;
			}
			else if (prvi.charAt(i) == 'T') {
				cT++;
			}
			countPrvi[i][0] = cA;
			countPrvi[i][1] = cC;
			countPrvi[i][2] = cG;
			countPrvi[i][3] = cT;
		}
		cA = 0; cC = 0; cG = 0; cT = 0;
		
		for(int i = 0; i < drugi.length(); i++) {
			if (drugi.charAt(i) == 'A'){
					cA++;
			}
			else if (drugi.charAt(i) == 'C') {
				cC++;
			}
			else if (drugi.charAt(i) == 'G') {
				cG++;
			}
			else if (drugi.charAt(i) == 'T') {
				cT++;
			}
			countDrugi[i][0] = cA;
			countDrugi[i][1] = cC;
			countDrugi[i][2] = cG;
			countDrugi[i][3] = cT;
		}
		
//		for (int i = 0; i < countPrvi.length; i++) {
//			System.out.println(countPrvi[i][0]);
//		}
//		System.out.println();
		
		for (int z = 0; z < testi; z++) {
			line = br.readLine().split(" ");
			int prviZac = Integer.parseInt(line[0]) -1;
			int prviKonc = Integer.parseInt(line[1]) -1;
			int drugiZac = Integer.parseInt(line[2]) -1;
			int drugiKonc = Integer.parseInt(line[3]) -1;
			
			
//			System.out.println("dfasdasd");
//			System.out.println("" + prviZac );
//			System.out.println("" + prviKonc);
			
//			for (int u = 0; u < 4; u++) {
//				System.out.print(countPrvi[prviZac][u]);
//			}
			
			
			int rez = 0;
			
			if(prviZac == 0 && drugiZac == 0) {
				rez += Math.abs((countPrvi[prviKonc][0] - 0) - 
						(countDrugi[drugiKonc][0] - 0));
//				System.out.println(rez + " " + countPrvi[prviZac][0] + " " + countPrvi[prviKonc][0]);
				rez += Math.abs((countPrvi[prviKonc][1] - 0) - 
						(countDrugi[drugiKonc][1] - 0));
//				System.out.println(rez);
				rez += Math.abs((countPrvi[prviKonc][2] - 0) - 
						(countDrugi[drugiKonc][2] - 0));
//				System.out.println(rez);
				rez += Math.abs((countPrvi[prviKonc][3] - 0) - 
						(countDrugi[drugiKonc][3] - 0));
//				System.out.println(rez);
//				System.out.println();
//				System.out.println();
	//
//				System.out.println();
			} else if (drugiZac == 0) {
				prviZac--;
				rez += Math.abs((countPrvi[prviKonc][0] - countPrvi[prviZac][0]) - 
						(countDrugi[drugiKonc][0] - 0));
//				System.out.println(rez + " " + countPrvi[prviZac][0] + " " + countPrvi[prviKonc][0]);
				rez += Math.abs((countPrvi[prviKonc][1] - countPrvi[prviZac][1]) - 
						(countDrugi[drugiKonc][1] - 0));
//				System.out.println(rez);
				rez += Math.abs((countPrvi[prviKonc][2] - countPrvi[prviZac][2]) - 
						(countDrugi[drugiKonc][2] - 0));
//				System.out.println(rez);
				rez += Math.abs((countPrvi[prviKonc][3] - countPrvi[prviZac][3]) - 
						(countDrugi[drugiKonc][3] - 0));
//				System.out.println(rez);
			} else if (prviZac == 0) {
				drugiZac--;
				rez += Math.abs((countPrvi[prviKonc][0] - 0) - 
						(countDrugi[drugiKonc][0] - countDrugi[drugiZac][0]));
//				System.out.println(rez + " " + countPrvi[prviZac][0] + " " + countPrvi[prviKonc][0]);
				rez += Math.abs((countPrvi[prviKonc][1] - 0) - 
						(countDrugi[drugiKonc][1] - countDrugi[drugiZac][1]));
//				System.out.println(rez);
				rez += Math.abs((countPrvi[prviKonc][2] - 0) - 
						(countDrugi[drugiKonc][2] - countDrugi[drugiZac][2]));
//				System.out.println(rez);
				rez += Math.abs((countPrvi[prviKonc][3] - 0) - 
						(countDrugi[drugiKonc][3] - countDrugi[drugiZac][3]));
//				System.out.println(rez);
				
			}
			
			else {
				prviZac--;
				drugiZac--;
				
				rez += Math.abs((countPrvi[prviKonc][0] - countPrvi[prviZac][0]) - 
						(countDrugi[drugiKonc][0] - countDrugi[drugiZac][0]));
//				System.out.println(rez + " " + countPrvi[prviZac][0] + " " + countPrvi[prviKonc][0]);
				rez += Math.abs((countPrvi[prviKonc][1] - countPrvi[prviZac][1]) - 
						(countDrugi[drugiKonc][1] - countDrugi[drugiZac][1]));
//				System.out.println(rez);
				rez += Math.abs((countPrvi[prviKonc][2] - countPrvi[prviZac][2]) - 
						(countDrugi[drugiKonc][2] - countDrugi[drugiZac][2]));
//				System.out.println(rez);
				rez += Math.abs((countPrvi[prviKonc][3] - countPrvi[prviZac][3]) - 
						(countDrugi[drugiKonc][3] - countDrugi[drugiZac][3]));
//				System.out.println(rez);
//				System.out.println();
//				System.out.println();
	//
//				System.out.println();
				
				
			}
			//System.out.println(rez);
			rezultati[z] = rez;
			
		}
		
		for (int i = 0; i < rezultati.length; i++) {
			System.out.println(rezultati[i]);
		}

	}
	
}