yipo
5/15/2017 - 3:00 PM

Jumping Mario

Jumping Mario

#include <algorithm>
#include <iostream>
#include <numeric>
#include <tuple>
#include <vector>
using namespace std;

tuple<int, int> count_jumps(const vector<int> &walls)
{
    vector<int> jumps(walls.size());
    adjacent_difference(walls.begin(), walls.end(), jumps.begin());

    return {
        count_if(jumps.begin() + 1, jumps.end(), [](int x) { return x > 0; }),
        count_if(jumps.begin() + 1, jumps.end(), [](int x) { return x < 0; })
    };
}

void test_case(int case_num)
{
    int n;
    cin >> n;
    vector<int> walls(n);
    for (auto &w : walls) cin >> w;

    int high_jumps, low_jumps;
    tie(high_jumps, low_jumps) = count_jumps(walls);

    cout << "Case " << case_num << ": " << high_jumps << " " << low_jumps << endl;
}

int main()
{
    int t;
    cin >> t;
    for (int i = 1; i <= t; i++) test_case(i);
    return 0;
}