#include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { assert( numeric_limits::max() > 1000000000 ); typedef multiset< long, greater > score_set; score_set scores; typedef vector< long > rank_set; rank_set ranks; ifstream in( "s5.in" ); // istream &in = cin; long cases_left = 0; in >> cases_left; ranks.reserve( cases_left ); long current_score; while ( cases_left-- && ( in >> current_score ) ) { score_set::iterator pos = scores.lower_bound( current_score ); long this_rank = 1 + distance( scores.begin(), pos ); scores.insert( pos, current_score ); ranks.push_back( this_rank ); // cerr << this_rank << " of " << scores.size() << endl; } double mean_rank = accumulate( ranks.begin(), ranks.end(), 0.0 ) / ranks.size(); cout << fixed << setprecision(2) << mean_rank << endl; return 0; }