Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ll long long
- #define ld long double
- #define pb push_back
- #define p_b pop_back
- #define si stack<int>
- #define sll stack<ll>
- #define sc stack<char>
- #define vi vector<int>
- #define vll vector<ll>
- #define mii map<int, int>
- #define msi map<string, int>
- #define mci map<char, int>
- #define qc queue<char>
- #define qi queue<int>
- #define qll queue<ll>
- using namespace std;
- int main(){
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- ll n;
- cin >> n;
- vll v;
- for(int i = 0; i < n; i++){
- int x;
- cin >> x;
- v.pb(x);
- }
- if(n == 1){
- cout << 0 << "\n";
- }
- else{
- set<pair<ll, ll>> s;
- pair<ll, ll> p;
- s.insert(p);
- for(ll j = 0; j < n-1; j++){
- p.first = (v[j] > v[j+1]) ? v[j] : v[j+1];
- p.second = (v[j] < v[j+1]) ? v[j] : v[j+1];
- for(ll i = j+2; i < n; i++){
- pair<ll, ll> tmp = p;
- if(v[i] > p.first && v[i] > p.second){
- if(p.first > p.second){
- p.second = v[i];
- } else{
- p.first = v[i];
- }
- } else if(v[i] > p.first && v[i] < p.second){
- p.first = v[i];
- } else if(v[i] < p.first && v[i] > p.second){
- p.second = v[i];
- }
- if(p.first < p.second){
- swap(p.first, p.second);
- }
- if(p != tmp){
- s.insert(p);
- }
- }
- }
- cout << s.size() << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement