/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 540.0 KiB
#2 Accepted 1ms 540.0 KiB
#3 Accepted 1ms 556.0 KiB
#4 Accepted 1ms 540.0 KiB
#5 Accepted 1ms 812.0 KiB
#6 Accepted 1ms 540.0 KiB
#7 Accepted 1ms 540.0 KiB
#8 Accepted 1ms 556.0 KiB
#9 Accepted 1ms 540.0 KiB
#10 Accepted 1ms 540.0 KiB
#11 Accepted 1ms 540.0 KiB
#12 Accepted 1ms 336.0 KiB
#13 Accepted 1ms 540.0 KiB
#14 Accepted 1ms 540.0 KiB
#15 Accepted 1ms 516.0 KiB
#16 Accepted 1ms 328.0 KiB
#17 Accepted 1ms 772.0 KiB
#18 Accepted 1ms 592.0 KiB
#19 Accepted 1ms 580.0 KiB
#20 Accepted 1ms 560.0 KiB
#21 Accepted 1ms 540.0 KiB
#22 Accepted 1ms 540.0 KiB
#23 Accepted 1ms 588.0 KiB
#24 Accepted 1ms 540.0 KiB
#25 Accepted 1ms 540.0 KiB
#26 Accepted 1ms 540.0 KiB
#27 Accepted 1ms 332.0 KiB
#28 Accepted 1ms 772.0 KiB
#29 Accepted 1ms 332.0 KiB
#30 Accepted 1ms 540.0 KiB
#31 Accepted 1ms 540.0 KiB
#32 Accepted 1ms 540.0 KiB
#33 Accepted 1ms 540.0 KiB
#34 Accepted 1ms 548.0 KiB
#35 Accepted 1ms 772.0 KiB
#36 Accepted 1ms 344.0 KiB
#37 Accepted 1ms 540.0 KiB
#38 Accepted 1ms 808.0 KiB
#39 Accepted 1ms 540.0 KiB
#40 Accepted 1ms 416.0 KiB
#41 Accepted 1ms 492.0 KiB
#42 Accepted 1ms 352.0 KiB
#43 Accepted 1ms 588.0 KiB
#44 Accepted 1ms 540.0 KiB
#45 Accepted 1ms 588.0 KiB
#46 Accepted 1ms 796.0 KiB
#47 Accepted 1ms 540.0 KiB
#48 Accepted 1ms 540.0 KiB
#49 Accepted 1ms 584.0 KiB
#50 Accepted 1ms 540.0 KiB
#51 Accepted 1ms 588.0 KiB
#52 Accepted 2ms 540.0 KiB
#53 Accepted 2ms 540.0 KiB
#54 Accepted 1ms 540.0 KiB
#55 Accepted 1ms 584.0 KiB
#56 Accepted 1ms 768.0 KiB
#57 Accepted 1ms 512.0 KiB
#58 Accepted 1ms 540.0 KiB
#59 Accepted 1ms 492.0 KiB
#60 Accepted 1ms 540.0 KiB
#61 Accepted 2ms 796.0 KiB
#62 Accepted 2ms 844.0 KiB
#63 Accepted 2ms 796.0 KiB
#64 Accepted 2ms 796.0 KiB
#65 Accepted 2ms 540.0 KiB
#66 Accepted 2ms 812.0 KiB
#67 Accepted 2ms 812.0 KiB
#68 Accepted 2ms 796.0 KiB
#69 Accepted 2ms 796.0 KiB
#70 Accepted 2ms 816.0 KiB
#71 Accepted 3ms 584.0 KiB
#72 Accepted 2ms 588.0 KiB
#73 Accepted 2ms 796.0 KiB
#74 Accepted 3ms 588.0 KiB
#75 Accepted 3ms 796.0 KiB
#76 Accepted 2ms 796.0 KiB
#77 Accepted 2ms 796.0 KiB
#78 Accepted 3ms 796.0 KiB
#79 Accepted 2ms 1.004 MiB
#80 Accepted 2ms 844.0 KiB
#81 Accepted 3ms 796.0 KiB
#82 Accepted 3ms 1.027 MiB
#83 Accepted 3ms 1.047 MiB
#84 Accepted 3ms 1.027 MiB
#85 Accepted 3ms 796.0 KiB
#86 Accepted 3ms 808.0 KiB
#87 Accepted 3ms 1.043 MiB
#88 Accepted 3ms 672.0 KiB
#89 Accepted 3ms 1.027 MiB
#90 Accepted 3ms 752.0 KiB
#91 Accepted 17ms 2.77 MiB
#92 Accepted 17ms 3.02 MiB
#93 Accepted 14ms 2.77 MiB
#94 Accepted 15ms 2.984 MiB
#95 Accepted 15ms 2.988 MiB
#96 Accepted 15ms 2.855 MiB
#97 Accepted 16ms 3.02 MiB
#98 Accepted 15ms 2.984 MiB
#99 Accepted 14ms 2.988 MiB
#100 Accepted 16ms 3.02 MiB

Code

/* 
 *   @author:- MAHMUDUL HASAN SAKIB
 *   DATE & TIME :- 2025-04-07 21:29:30
 *   BANGLADESH , SYLHET.
 */ 
#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <chrono>
#include <cmath>
#include <complex>
#include <deque>
#include <forward_list>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iostream>
#include <limits>
#include <list>
#include <map>
#include <memory>
#include <numeric>
#include <optional>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <tuple>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
using namespace std;
#define fi first
#define se second
#define endl '\n'
#define ll long long
#define ull unsigned long long
#define ld long double
#define PI acos(-1.0)
#define pb push_back
#define mp make_pair
#define vi vector<ll>
#define maxn 500005
#define mod 1000000007
#define inf 1000000007
#define pii pair<ll,ll>
#define vii vector<pii>
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define lcm(a,b) ((a*b)/__gcd(a,b));
#define srt(v) sort(v.begin(),v.end())
#define rsrt(v) sort(v.rbegin(),v.rend())
#define setbits(x) __builtin_popcountll(x)
#define rep(i, a, b) for(ll i = (a); i < (b); i++)
#define per(i, a, b) for(int i = (a); i >= (b); i--)
#define rev_str(str) reverse(str.begin(),str.end());
#define print(v) for(auto e:v) cout<<e<<" "; cout<<endl;
#define sum(a) (accumulate((a).begin(), (a).end(), 0LL))
#define printp(v) for(auto e:v) cout<<e.first<<" "<<e.second<<endl;
#define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
bool sortByValue(const pair<int, int>& a, const pair<int, int>& b) {return a.second > b.second;}
const int N = 1e6+7;
bool is_Prime(ll n) {
    if (n < 2) return false; 
    for (ll i = 2; i * i <= n; ++i) {
        if (n % i == 0) return false; 
    }
    return true; 
}
long long Pow(ll a,ll b){
    ll ans = 1;
    while(b>0){
        if(b&1) ans*=a;
        b>>=1;
        a*=a;
    }
    return ans;
}
long long modPow(ll a,ll b){
    ll ans = 1;
    while(b>0){
        if(b&1) ans=(ans*a)%mod;
        b>>=1;
        a=(a*a)%mod;
    }
    return ans;
}
// lies between divisor of a and b == GCD
// prime factorization while the taking the maximum power ==LCM...
ll gcd(ll a, ll b) {
    while (b != 0) {
        ll temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}
 
ll Lcm(ll a, ll b) {
    return (a / gcd(a, b)) * b;
}
// const int N = 1e5+10;
// int bit[N];

// void update(int i, int x){
// 	for(; i < N; i += (i&-i))
// 		bit[i] += x;
// }

// int sum(int i){
// 	int ans = 0;
// 	for(; i > 0; i -= (i&-i))
// 		ans += bit[i];
// 	return ans;
// }
struct FenwickTree {
    vector<ll> bit;
    ll n;
    FenwickTree(ll size) {
        n = size;
        bit.assign(n + 1, 0);
    }
    void update(ll i, ll val) {
        for (; i <= n; i += (i & -i)) {
            bit[i] += val;
        }
    }
    ll Sum(ll i) {
        ll res = 0;
        for (; i > 0; i -= (i & -i)) {
            res += bit[i];
        }
        return res;
    }
    ll range_query(ll l, ll r) {
        return Sum(r) - Sum(l - 1);
    }
};

void solve(){
    ll n;cin>>n;
    vi p(n);
    rep(i,0,n) cin>>p[i];
    FenwickTree right_bit(n),left_bit(n);
    vector<bool>special(n,false);

    for(int i=  n-1;i>=0;i--){
        ll greater_eq = right_bit.range_query(p[i]+1,n);
        if(greater_eq >= p[i]){
            special[i] = true;
        }
        right_bit.update(p[i]+1,1);
    }
    for(int i = 0;i<n;i++){
        ll smaller_eq = left_bit.Sum(p[i]+1);
        if(smaller_eq>=p[i]){
            special[i] = true;
        }
        left_bit.update(p[i]+1,1);
    }

    ll cnt = 0;
    rep(i,0,n){
        if(special[i]) cnt++;
    }

    cout<<cnt<<endl;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    ll t=1;//cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1184 The Curious Kid and the Number Game
Language
C++17 (G++ 13.2.0)
Submit At
2025-04-07 17:53:55
Judged At
2025-04-07 17:53:55
Judged By
Score
100
Total Time
17ms
Peak Memory
3.02 MiB