/*
* @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