Submission #44113217


Source Code Expand

#include <assert.h>
#include <math.h>
#include <memory.h>
#include <stdio.h>
 
#include <algorithm>
#include <chrono>
#include <complex>
#include <ctime>
#include <fstream>
#include <iostream>
#include <list>
#include <map>
#include <random>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>

using namespace std;

#define ARG4(_1,_2,_3,_4,...) _4
 
#define forn3(i,l,r) for (int i = int(l); i < int(r); ++i)
#define forn2(i,n) forn3 (i, 0, n)
#define forn(...) ARG4(__VA_ARGS__, forn3, forn2) (__VA_ARGS__)
 
#define ford3(i,l,r) for (int i = int(r) - 1; i >= int(l); --i)
#define ford2(i,n) ford3 (i, 0, n)
#define ford(...) ARG4(__VA_ARGS__, ford3, ford2) (__VA_ARGS__)

#define pb push_back
#define mp make_pair
#define fs first
#define sc second
#define sz(a) ((int) (a).size())
#define all(x) (x).begin(), (x).end()

const long double eps = 1e-9;
const int inf = (1 << 30) - 1;
const long long inf64 = (1LL << 62) - 1;
const long double pi = acos(-1);

template<typename T> inline T abs (T x) {return x < 0 ? -x : x;}
template<typename T> inline T sqr (T x) {return x * x;}

template<typename T1, typename T2> inline bool umx (T1& a, T2 b) {if (a < b) {a = b; return 1;} return 0;}
template<typename T1, typename T2> inline bool umn (T1& a, T2 b) {if (b < a) {a = b; return 1;} return 0;}

void Solve(int ti) {
    int n;
    cin >> n;

    vector<int> a(n);
    forn (i, n) {
        cin >> a[i];
        --a[i];
    }

    deque<pair<int, int>> segs;
    int left = 0;
    int right = 0;

    long long res = 0;
    while (left < n) {
        while (right < n) {
            if (a[right] == 0) {
                segs.pb({right, right});
            } else {
                while (!segs.empty() && a[segs.back().sc] + 1 != a[right]) {
                    segs.pop_back();
                }

                if (segs.empty()) {
                    break;
                }     

                segs.back().sc = right;
            }

            res += sz(segs);
            ++right;
        }

        if (segs.empty()) {
            ++left;
        } else {
            left = segs.front().sc + 1;
            segs.pop_front();
        }
        
        umx(right, left);
    }

    cout << res << "\n";
}

int main () {
    ios_base::sync_with_stdio(0);
    std::cin.tie(nullptr);
    
    // clock_t start_clock = clock();
    
    // freopen("_input.txt", "rt", stdin);
    // freopen("_output.txt", "wt", stdout);

    int tc = 1;
    // cin >> tc;
    forn (ti, tc) {
        Solve(ti);
    }
    
    // double total_seconds = (double) (clock() - start_clock) / CLOCKS_PER_SEC;
    // cerr << "Working time: " << total_seconds << "s." << endl;

    return 0;
}

Submission Info

Submission Time
Task B - Insert 1, 2, 3, ...
User TeaPot
Language C++ (GCC 9.2.1)
Score 600
Code Size 2830 Byte
Status AC
Exec Time 47 ms
Memory 8992 KiB

Compile Error

./Main.cpp: In function ‘void Solve(int)’:
./Main.cpp:51:16: warning: unused parameter ‘ti’ [-Wunused-parameter]
   51 | void Solve(int ti) {
      |            ~~~~^~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 60
Set Name Test Cases
Sample 01_sample_01.txt, 01_sample_02.txt, 01_sample_03.txt
All 01_sample_01.txt, 01_sample_02.txt, 01_sample_03.txt, 02_rand_1_01.txt, 02_rand_1_02.txt, 02_rand_1_03.txt, 02_rand_1_04.txt, 02_rand_1_05.txt, 02_rand_1_06.txt, 02_rand_1_07.txt, 02_rand_1_08.txt, 02_rand_1_09.txt, 02_rand_1_10.txt, 02_rand_1_11.txt, 02_rand_1_12.txt, 02_rand_1_13.txt, 02_rand_1_14.txt, 02_rand_1_15.txt, 03_rand_2_01.txt, 03_rand_2_02.txt, 03_rand_2_03.txt, 03_rand_2_04.txt, 03_rand_2_05.txt, 03_rand_2_06.txt, 03_rand_2_07.txt, 03_rand_2_08.txt, 03_rand_2_09.txt, 03_rand_2_10.txt, 03_rand_2_11.txt, 03_rand_2_12.txt, 03_rand_2_13.txt, 03_rand_2_14.txt, 03_rand_2_15.txt, 03_rand_2_16.txt, 03_rand_2_17.txt, 03_rand_2_18.txt, 03_rand_2_19.txt, 03_rand_2_20.txt, 03_rand_2_21.txt, 03_rand_2_22.txt, 03_rand_2_23.txt, 03_rand_2_24.txt, 03_rand_2_25.txt, 03_rand_2_26.txt, 03_rand_2_27.txt, 03_rand_2_28.txt, 03_rand_2_29.txt, 03_rand_2_30.txt, 03_rand_2_31.txt, 03_rand_2_32.txt, 03_rand_2_33.txt, 03_rand_2_34.txt, 03_rand_2_35.txt, 03_rand_2_36.txt, 03_rand_2_37.txt, 03_rand_2_38.txt, 03_rand_2_39.txt, 03_rand_2_40.txt, 03_rand_2_41.txt, 03_rand_2_42.txt
Case Name Status Exec Time Memory
01_sample_01.txt AC 6 ms 3392 KiB
01_sample_02.txt AC 2 ms 3448 KiB
01_sample_03.txt AC 7 ms 3496 KiB
02_rand_1_01.txt AC 2 ms 3440 KiB
02_rand_1_02.txt AC 3 ms 3444 KiB
02_rand_1_03.txt AC 43 ms 8992 KiB
02_rand_1_04.txt AC 38 ms 8952 KiB
02_rand_1_05.txt AC 2 ms 3500 KiB
02_rand_1_06.txt AC 39 ms 5044 KiB
02_rand_1_07.txt AC 38 ms 5164 KiB
02_rand_1_08.txt AC 38 ms 5116 KiB
02_rand_1_09.txt AC 41 ms 5056 KiB
02_rand_1_10.txt AC 38 ms 5116 KiB
02_rand_1_11.txt AC 37 ms 5240 KiB
02_rand_1_12.txt AC 34 ms 5040 KiB
02_rand_1_13.txt AC 33 ms 5244 KiB
02_rand_1_14.txt AC 40 ms 5128 KiB
02_rand_1_15.txt AC 40 ms 5052 KiB
03_rand_2_01.txt AC 38 ms 7228 KiB
03_rand_2_02.txt AC 37 ms 7620 KiB
03_rand_2_03.txt AC 39 ms 7612 KiB
03_rand_2_04.txt AC 37 ms 7144 KiB
03_rand_2_05.txt AC 38 ms 7148 KiB
03_rand_2_06.txt AC 40 ms 7616 KiB
03_rand_2_07.txt AC 39 ms 7228 KiB
03_rand_2_08.txt AC 38 ms 6440 KiB
03_rand_2_09.txt AC 34 ms 6336 KiB
03_rand_2_10.txt AC 40 ms 6500 KiB
03_rand_2_11.txt AC 38 ms 6436 KiB
03_rand_2_12.txt AC 37 ms 6556 KiB
03_rand_2_13.txt AC 38 ms 6332 KiB
03_rand_2_14.txt AC 37 ms 6436 KiB
03_rand_2_15.txt AC 42 ms 5644 KiB
03_rand_2_16.txt AC 39 ms 5748 KiB
03_rand_2_17.txt AC 37 ms 5652 KiB
03_rand_2_18.txt AC 38 ms 5604 KiB
03_rand_2_19.txt AC 38 ms 5712 KiB
03_rand_2_20.txt AC 38 ms 5680 KiB
03_rand_2_21.txt AC 41 ms 5540 KiB
03_rand_2_22.txt AC 36 ms 4988 KiB
03_rand_2_23.txt AC 37 ms 4976 KiB
03_rand_2_24.txt AC 36 ms 5116 KiB
03_rand_2_25.txt AC 36 ms 4976 KiB
03_rand_2_26.txt AC 37 ms 5032 KiB
03_rand_2_27.txt AC 38 ms 5116 KiB
03_rand_2_28.txt AC 37 ms 5116 KiB
03_rand_2_29.txt AC 36 ms 5128 KiB
03_rand_2_30.txt AC 37 ms 5176 KiB
03_rand_2_31.txt AC 39 ms 5236 KiB
03_rand_2_32.txt AC 38 ms 5240 KiB
03_rand_2_33.txt AC 38 ms 5088 KiB
03_rand_2_34.txt AC 36 ms 5036 KiB
03_rand_2_35.txt AC 38 ms 5164 KiB
03_rand_2_36.txt AC 44 ms 4980 KiB
03_rand_2_37.txt AC 46 ms 4992 KiB
03_rand_2_38.txt AC 46 ms 5164 KiB
03_rand_2_39.txt AC 45 ms 4968 KiB
03_rand_2_40.txt AC 47 ms 4976 KiB
03_rand_2_41.txt AC 45 ms 4964 KiB
03_rand_2_42.txt AC 46 ms 4996 KiB