Sunday, 3 August 2014

UVa 299 - Train Swapping Java Solution



/*
 * @author Divyanshu
 * @place GNUD RC SATHIALA
 * @judge https://uva.onlinejudge.org
 * @verdict Accepted
 * @problem UVa 299 - Train Swapping
 * @category Sorting
 */




import java.util.Scanner;

 class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int cases = in.nextInt();

//loop through each case
while(cases-- > 0 ){

//read length of train
int length = in.nextInt();
//create train array carriage
int carriages[] =  new int[length];

//scan each carriage's station number
for(int i = 0 ; i < length ; ++i)
{
carriages[i] =  in.nextInt();
}

// total swap counter variable
int swaps = 0 ;

//insertion sort on carriages[] to calculate  total train swaps for automate sort
for(int  i = 0 ; i < length ; ++i)
{
for( int  j = i -1 ; (j>=0 && carriages[j+1] < carriages[j]) ; --j ) 
{
//xor-swap train carriages to brinng in increasing order
carriages[j+1] ^= carriages[j] ;
   carriages[j]  ^=   carriages[j+1] ;
   carriages[j+1] ^= carriages[j] ;
    
++swaps;
}
}
//print the result
System.out.println("Optimal train swapping takes " +swaps +" swaps.");

}


//close the scanner
in.close();

}

}

No comments:

Post a Comment