U E D R , A S I H C RSS

Stacks Of Flapjacks/이동현

;;
0~n flip(1) n .
0~n-1 .. n .

.
.


~cpp 
//Stacks Of Flapjacks:2005.04.15 
#include <iostream>
using namespace std;

class StacksOfFlapjacks{
private:
	int* cake;	//
	int arr_size;	// 
	void flip(int n){	//n   !
		int k = (arr_size-n+1)/2;
		for(int i=0; i<k; i++){
			swap(cake[i],cake[arr_size-n-i]);
		}
		cout << n << " ";
	}
	int searchBigIndex(int end){	//0~end index   index.
		int big_index=0;
		for(int i=1;i<=end;i++){
			if(cake[big_index]<cake[i])
				big_index = i;
		}
		return big_index;
	}
	bool isEnd(){	// .
		for(int i=1;i<arr_size;i++){
			if(cake[i-1]>cake[i])
				return false;
		}
		cout << "0\n";	//    0
		return true;
	}
public:
	void run(int*arr, int size){	
		cake = arr;
		arr_size = size;
		for(int j=arr_size-1, n=1;j>=0;j--, n++){	
			if(isEnd()==true)
				break;
			if(searchBigIndex(j)==j)	//    .
				continue;		
			if(searchBigIndex(j)!=0)	//     .
				flip(arr_size-searchBigIndex(j));
			flip(n);			
		}		
	}
};

int main(void){	
	StacksOfFlapjacks sof;
	int arr[30],j=0;	
	while(cin >> arr[j]){	//  ^Z(EOF) .				
		j++;
                  if(j>30) break;
	}
	for(int i=0;i<j;i++)
		cout << arr[i] << " ";
	cout << "\n";
	sof.run(arr,j);		
	for(i=0;i<j;i++)
		cout << arr[i] << " ";	
	return 0;
}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:06
Processing time 0.0094 sec