- #include <cstddef> 
- #include <algorithm> 
- #include <iterator> 
- #include <iostream> 
-   
- template<typename T, ::std::size_t N> 
- static ::std::ostream& print_array(::std::ostream& out, T(&arr)[N]) { 
- 	out << "[" << arr[0]; 
- 	for(::std::size_t i = 1; i < N; ++i) { 
- 		out << ", " << arr[i]; 
- 	} 
- 	out << "]"; 
- 	return out; 
- } 
-   
- int main() { 
- 	int array[] = {1, 3, 2, 4}; 
- 	auto begin = ::std::begin(array); 
- 	auto end = ::std::end(array); 
-   
- 	::std::sort(begin, end); 
- 	print_array(::std::cout, array) << "\n"; 
-   
- 	::std::sort(begin, end, [](int lhs, int rhs) { return lhs > rhs; }); 
- 	print_array(::std::cout, array) << "\n"; 
-   
- 	::std::sort(begin, end, [](int lhs, int rhs) { 
- 		if(lhs%2 != rhs%2) return lhs%2 < rhs%2; 
- 		else return lhs > rhs; 
- 	}); 
- 	print_array(::std::cout, array) << "\n"; 
- } 
				I2luY2x1ZGUgPGNzdGRkZWY+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgOjpzdGQ6OnNpemVfdCBOPgpzdGF0aWMgOjpzdGQ6Om9zdHJlYW0mIHByaW50X2FycmF5KDo6c3RkOjpvc3RyZWFtJiBvdXQsIFQoJmFycilbTl0pIHsKCW91dCA8PCAiWyIgPDwgYXJyWzBdOwoJZm9yKDo6c3RkOjpzaXplX3QgaSA9IDE7IGkgPCBOOyArK2kpIHsKCQlvdXQgPDwgIiwgIiA8PCBhcnJbaV07Cgl9CglvdXQgPDwgIl0iOwoJcmV0dXJuIG91dDsKfQoKaW50IG1haW4oKSB7CglpbnQgYXJyYXlbXSA9IHsxLCAzLCAyLCA0fTsKCWF1dG8gYmVnaW4gPSA6OnN0ZDo6YmVnaW4oYXJyYXkpOwoJYXV0byBlbmQgPSA6OnN0ZDo6ZW5kKGFycmF5KTsKCQoJOjpzdGQ6OnNvcnQoYmVnaW4sIGVuZCk7CglwcmludF9hcnJheSg6OnN0ZDo6Y291dCwgYXJyYXkpIDw8ICJcbiI7CgkKCTo6c3RkOjpzb3J0KGJlZ2luLCBlbmQsIFtdKGludCBsaHMsIGludCByaHMpIHsgcmV0dXJuIGxocyA+IHJoczsgfSk7CglwcmludF9hcnJheSg6OnN0ZDo6Y291dCwgYXJyYXkpIDw8ICJcbiI7CgkKCTo6c3RkOjpzb3J0KGJlZ2luLCBlbmQsIFtdKGludCBsaHMsIGludCByaHMpIHsKCQlpZihsaHMlMiAhPSByaHMlMikgcmV0dXJuIGxocyUyIDwgcmhzJTI7CgkJZWxzZSByZXR1cm4gbGhzID4gcmhzOwoJfSk7CglwcmludF9hcnJheSg6OnN0ZDo6Y291dCwgYXJyYXkpIDw8ICJcbiI7Cn0=
				
				
				
				
				
			 
			
				
			
			
				
	
		
		
	
	
		[1, 2, 3, 4]
[4, 3, 2, 1]
[4, 2, 3, 1]