Submission #1268994


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

#define ms(s, n) memset(s, n, sizeof(s))
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define FORd(i, a, b) for (int i = (a) - 1; i >= (b); i--)
#define FORall(it, a) for (__typeof((a).begin()) it = (a).begin(); it != (a).end(); it++)
#define sz(a) int((a).size())
#define present(t, x) (t.find(x) != t.end())
#define all(a) (a).begin(), (a).end()
#define uni(a) (a).erase(unique(all(a)), (a).end())
#define pb push_back
#define pf push_front
#define mp make_pair
#define fi first
#define se second
#define prec(n) fixed<<setprecision(n)
#define bit(n, i) (((n) >> (i)) & 1)
#define bitcount(n) __builtin_popcountll(n)
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int, int> pi;
typedef vector<int> vi;
typedef vector<pi> vii;
const int MOD = (int) 1e9 + 7;
const int INF = (int) 1e9;
const ll LINF = (ll) 1e18;
const ld PI = acos((ld) -1);
const ld EPS = 1e-9;
inline ll gcd(ll a, ll b) {ll r; while (b) {r = a % b; a = b; b = r;} return a;}
inline ll lcm(ll a, ll b) {return a / gcd(a, b) * b;}
inline ll fpow(ll n, ll k, int p = MOD) {ll r = 1; for (; k; k >>= 1) {if (k & 1) r = r * n % p; n = n * n % p;} return r;}
template<class T> inline int chkmin(T& a, const T& val) {return val < a ? a = val, 1 : 0;}
template<class T> inline int chkmax(T& a, const T& val) {return a < val ? a = val, 1 : 0;}
inline ll isqrt(ll k) {ll r = sqrt(k) + 1; while (r * r > k) r--; return r;}
inline ll icbrt(ll k) {ll r = cbrt(k) + 1; while (r * r * r > k) r--; return r;}
inline void addmod(int& a, int val, int p = MOD) {if ((a = (a + val)) >= p) a -= p;}
inline void submod(int& a, int val, int p = MOD) {if ((a = (a - val)) < 0) a += p;}
inline int mult(int a, int b, int p = MOD) {return (ll) a * b % p;}
inline int inv(int a, int p = MOD) {return fpow(a, p - 2, p);}
inline int sign(ld x) {return x < -EPS ? -1 : x > +EPS;}
inline int sign(ld x, ld y) {return sign(x - y);}
#define db(x) cerr << #x << " = " << (x) << ", ";
#define endln cerr << "\n";
#define chkpt cerr << "-----\n";

const int maxn = 2e5 + 5;
int n;
int p[maxn];

void solve() {
    cin >> n;
    FOR(i, 0, n) {
        int x; cin >> x; x--;
        p[x] = i;
    }
    int ans = 0, first = n - 1;
    FORd(i, n - 1, 0) {
        if (first != i + 1) {
            if (p[i] > p[first] && p[i] < p[i + 1]) {
            }
            else if (p[i] < p[i + 1] && p[i + 1] < p[first]) {
            }
            else if (p[i + 1] < p[first] && p[first] < p[i]) {
            }
            else {
                first = i + 1;
                ans++;
            }
        }
        else if (p[i] < p[i + 1]) {
            first = i;
        }
    }
    if (first != 0) ans++;
    cout << ans << "\n";
}

int main() {
    int JUDGE_ONLINE = 1;
    if (fopen("in.txt", "r")) {
        JUDGE_ONLINE = 0;
        assert(freopen("in.txt", "r", stdin));
        //assert(freopen("out.txt", "w", stdout));
    }
    else {
        ios_base::sync_with_stdio(0), cin.tie(0);
    }
    solve();
    if (!JUDGE_ONLINE) {
        //cout << "\nTime elapsed: " << 1000 * clock() / CLOCKS_PER_SEC << "ms\n";
    }
    return 0;
}

Submission Info

Submission Time
Task F - Strange Sorting
User chemthan
Language C++14 (GCC 5.4.1)
Score 2400
Code Size 3268 Byte
Status AC
Exec Time 23 ms
Memory 1024 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 2400 / 2400
Status
AC × 3
AC × 29
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All sample1.txt, sample2.txt, sample3.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in21.txt, in22.txt, in23.txt, in3.txt, in4.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt, sample3.txt
Case Name Status Exec Time Memory
in1.txt AC 20 ms 1024 KB
in10.txt AC 20 ms 1024 KB
in11.txt AC 20 ms 1024 KB
in12.txt AC 20 ms 1024 KB
in13.txt AC 20 ms 1024 KB
in14.txt AC 20 ms 1024 KB
in15.txt AC 20 ms 1024 KB
in16.txt AC 20 ms 1024 KB
in17.txt AC 20 ms 1024 KB
in18.txt AC 20 ms 1024 KB
in19.txt AC 20 ms 1024 KB
in2.txt AC 20 ms 1024 KB
in20.txt AC 21 ms 1024 KB
in21.txt AC 18 ms 1024 KB
in22.txt AC 23 ms 1024 KB
in23.txt AC 1 ms 256 KB
in3.txt AC 20 ms 1024 KB
in4.txt AC 20 ms 1024 KB
in5.txt AC 20 ms 1024 KB
in6.txt AC 20 ms 1024 KB
in7.txt AC 20 ms 1024 KB
in8.txt AC 20 ms 1024 KB
in9.txt AC 20 ms 1024 KB
sample1.txt AC 1 ms 256 KB
sample2.txt AC 1 ms 256 KB
sample3.txt AC 1 ms 256 KB