Submission #377062

#TimeUsernameProblemLanguageResultExecution timeMemory
377062ijxjdjdMoney (IZhO17_money)C++14
45 / 100
1529 ms58092 KiB
#include <bits/stdc++.h>
#define FR(i, N) for (int i = 0; i < int(N); i++)
#define all(x) begin(x), end(x)

using namespace std;

using ll = long long;

int main() {
	cin.tie(0);
	cin.sync_with_stdio(0);
	int N;
	map<int, int> left;
	cin >> N;
	vector<int> arr(N);
	FR(i, N) {
	    cin >> arr[i];
        left[arr[i]]++;
    }
    int lst = arr[N-1];
    int ans = 1;
    bool ori = true;
    for (int i = N-2; i >= 0; i--) {
        left[arr[i+1]]--;
        if (left[arr[i+1]] == 0) {
            left.erase(arr[i+1]);
        }
        if (lst == arr[i]) {

        }
        else {
            auto it = left.lower_bound(lst);
            if (it != left.begin() && (*prev(it)).first == arr[i]) {
                if (left.count(lst)) {
                    if (ori) {
                        ori = false;
                    }
                    else {
                        ans++;
                        ori = true;
                    }
                }
                else {
                    ori = false;
                }
            }
            else {
                ans++;
                ori = true;
            }
        }
        lst = arr[i];

    }
    cout << ans << '\n';
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...