CSES - Datatähti 2017 alku - Results
Submission details
Task:Järjestys
Sender:Shrike
Submission time:2016-10-07 11:43:58 +0300
Language:C++
Status:READY
Result:56
Feedback
groupverdictscore
#1ACCEPTED19
#2ACCEPTED37
#30
Test results
testverdicttimegroup
#1ACCEPTED0.05 s1details
#2ACCEPTED0.05 s2details
#3--3details

Code

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
#include <string>
#include <sstream>

using namespace std;

int atoi (string c) {
	stringstream s;
	int i;
	s << c;
	s >> i;
	return i;
}

 
template <typename T, typename U>
vector<int> 
pancake_sort(T first, T last, U order)
{
	vector<int> prod;
	if (distance(first, last) < 2)
		return prod; 
 
	for (; first != last; --last) {
		T mid = max_element(first, last, order);
		if (mid == last - 1)
			continue;
		if (first != mid) {
			reverse(first, mid + 1);
			prod.push_back(distance(first, mid + 1));
		}
		reverse(first, last);
		prod.push_back(distance(first, last));
	}
	return prod;
}
 
template <typename T>
vector<int>
pancake_sort(T first, T last)
{
	return pancake_sort(first, last, less<typename iterator_traits<T>::value_type>());
}

int
main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	string buf, i;
	getline (cin, i);
	vector<int> fin, Vec(atoi (i));
	getline (cin, buf);
	istringstream ssin(buf);
        int input, j = 0;
        while(ssin >> input) {
            Vec[j] = input;
	    j++;
        }

	fin = pancake_sort (Vec.begin(), Vec.end());
	cout << fin.size() << "\n";
	copy(fin.begin(), fin.end(), ostream_iterator<int>(cout, " "));
	cout << "\n";
	return 0;
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
10
9 3 4 7 6 5 10 2 8 1

correct output
32
10 10 9 10 9 8 7 9 4 2 1 4 5 2...

user output
11
7 10 4 9 7 8 4 7 3 4 2 

Test 2

Group: 2

Verdict: ACCEPTED

input
1000
650 716 982 41 133 1000 876 92...

correct output
3984
207 207 206 207 128 127 126 12...

user output
1976
6 1000 904 999 964 998 333 997...

Test 3

Group: 3

Verdict:

input
100000
94703 47808 62366 31885 7091 8...

correct output
399956
98676 98676 98675 98676 62994 ...

user output
(empty)