Submission #969123

# Submission time Handle Problem Language Result Execution time Memory
969123 2024-04-24T14:28:15 Z Tuanlinh123 Sequence (APIO23_sequence) C++17
43 / 100
561 ms 82020 KB
#include<bits/stdc++.h>
#define ll long long
#define pll pair<ll, ll>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ld long double
#define sz(a) ((ll)(a).size())
using namespace std;
 
const ll maxn=500005, inf=1e9;
vector <ll> p[maxn];
ll a[maxn], minp[maxn], maxp[maxn], mins[maxn], maxs[maxn];
 
namespace SegTree
{
    ll n, Max[maxn*4], Min[maxn*4], lz[maxn*4];
 
    void build(ll i, ll Start, ll End)
    {
        if (Start==End) {Min[i]=Max[i]=Start; return;}
        ll mid=(Start+End)/2;
        build(i*2, Start, mid), build(i*2+1, mid+1, End);
        Min[i]=min(Min[i*2], Min[i*2+1]);
        Max[i]=max(Max[i*2], Max[i*2+1]);
    }
    void init(ll sz){n=sz, build(1, 0, n);}
 
    void Move(ll i)
    {
        ll t=lz[i]; lz[i]=0;
        Min[i*2]+=t, Max[i*2]+=t, lz[i*2]+=t;
        Min[i*2+1]+=t, Max[i*2+1]+=t, lz[i*2+1]+=t;
    }
 
    void update(ll i, ll Start, ll End, ll l, ll r, ll x)
    {
        if (Start>r || End<l) return;
        if (Start>=l && End<=r) {Max[i]+=x, Min[i]+=x, lz[i]+=x; return;}
        ll mid=(Start+End)/2; if (lz[i]) Move(i);
        if (mid>=l) update(i*2, Start, mid, l, r, x);
        if (mid+1<=r) update(i*2+1, mid+1, End, l, r, x);
        Min[i]=min(Min[i*2], Min[i*2+1]);
        Max[i]=max(Max[i*2], Max[i*2+1]);
    }
    void update(ll l, ll r, ll x) {update(1, 0, n, l, r, x);}
 
    pll query(ll i, ll Start, ll End, ll l, ll r)
    {
        if (Start>r || End<l) return {1e9, 0};
        if (Start>=l && End<=r) return {Min[i], Max[i]};
        ll mid=(Start+End)/2; if (lz[i]) Move(i);
        if (mid<l) return query(i*2+1, mid+1, End, l, r);
        if (mid+1>r) return query(i*2, Start, mid, l, r);
        pll q1=query(i*2, Start, mid, l, r), q2=query(i*2+1, mid+1, End, l, r);
        return {min(q1.fi, q2.fi), max(q1.se, q2.se)};
    }
    pll query(ll l, ll r){return query(1, 0, n, l, r);}
}
 
int sequence(int n, vector <int> A)
{
	SegTree::init(n);
    for (ll i=1; i<=n; i++) a[i]=A[i-1], p[a[i]].pb(i);
    for (ll i=1; i<=n; i++)
    {
        for (ll j:p[i]) SegTree::update(j, n, -1);
        for (ll j:p[i])
        {
            tie(minp[j], maxp[j])=SegTree::query(0, j-1);
            tie(mins[j], maxs[j])=SegTree::query(j, n);
        }
        for (ll j:p[i]) SegTree::update(j, n, -1);
    }
    auto check=[&](ll mid)
    {
        for (ll i=1; i<=n; i++)
        {
            for (ll j=0; j+mid<=sz(p[i]); j++)
            {
                ll l=p[i][j], r=p[i][j+mid-1];
                ll l1=minp[l], r1=maxp[l], l2=mins[r], r2=maxs[r];
                if (l1>r1 || l2>r2) continue;
                if (max(l1, l2)-min(r1, r2)<=mid) return true;
            }
        }
        return false;
    };  
    ll lo=1, hi=n;
    while (hi>lo)
    {
        ll mid=(lo+hi+1)/2;
        if (check(mid)) lo=mid;
        else hi=mid-1;
    }
    return lo;
}
# Verdict Execution time Memory Grader output
1 Correct 6 ms 27228 KB Output is correct
2 Correct 5 ms 27228 KB Output is correct
3 Correct 5 ms 27228 KB Output is correct
4 Correct 5 ms 27228 KB Output is correct
5 Correct 7 ms 27228 KB Output is correct
6 Correct 5 ms 27224 KB Output is correct
7 Correct 5 ms 27228 KB Output is correct
8 Correct 6 ms 27228 KB Output is correct
9 Correct 5 ms 27228 KB Output is correct
10 Correct 5 ms 27228 KB Output is correct
11 Correct 5 ms 27228 KB Output is correct
12 Correct 5 ms 27228 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 27228 KB Output is correct
2 Correct 5 ms 27228 KB Output is correct
3 Correct 5 ms 27228 KB Output is correct
4 Correct 5 ms 27228 KB Output is correct
5 Correct 7 ms 27228 KB Output is correct
6 Correct 5 ms 27224 KB Output is correct
7 Correct 5 ms 27228 KB Output is correct
8 Correct 6 ms 27228 KB Output is correct
9 Correct 5 ms 27228 KB Output is correct
10 Correct 5 ms 27228 KB Output is correct
11 Correct 5 ms 27228 KB Output is correct
12 Correct 5 ms 27228 KB Output is correct
13 Correct 6 ms 27228 KB Output is correct
14 Correct 6 ms 27228 KB Output is correct
15 Correct 6 ms 27228 KB Output is correct
16 Correct 6 ms 27228 KB Output is correct
17 Correct 6 ms 27480 KB Output is correct
18 Correct 6 ms 27228 KB Output is correct
19 Correct 6 ms 27228 KB Output is correct
20 Correct 7 ms 27228 KB Output is correct
21 Incorrect 7 ms 27228 KB Output isn't correct
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 27228 KB Output is correct
2 Correct 344 ms 76596 KB Output is correct
3 Correct 358 ms 76536 KB Output is correct
4 Correct 300 ms 70084 KB Output is correct
5 Correct 369 ms 76120 KB Output is correct
6 Correct 335 ms 75856 KB Output is correct
7 Correct 292 ms 70468 KB Output is correct
8 Correct 300 ms 71252 KB Output is correct
9 Correct 300 ms 70068 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 27228 KB Output is correct
2 Correct 322 ms 71196 KB Output is correct
3 Correct 315 ms 70064 KB Output is correct
4 Correct 315 ms 70184 KB Output is correct
5 Correct 342 ms 70640 KB Output is correct
6 Correct 315 ms 70580 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 523 ms 81748 KB Output is correct
2 Correct 539 ms 82020 KB Output is correct
3 Correct 561 ms 81488 KB Output is correct
4 Correct 526 ms 81152 KB Output is correct
5 Correct 430 ms 77904 KB Output is correct
6 Correct 426 ms 77908 KB Output is correct
7 Correct 343 ms 76684 KB Output is correct
8 Correct 345 ms 76368 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 27228 KB Output is correct
2 Correct 5 ms 27228 KB Output is correct
3 Correct 5 ms 27228 KB Output is correct
4 Correct 5 ms 27228 KB Output is correct
5 Correct 7 ms 27228 KB Output is correct
6 Correct 5 ms 27224 KB Output is correct
7 Correct 5 ms 27228 KB Output is correct
8 Correct 6 ms 27228 KB Output is correct
9 Correct 5 ms 27228 KB Output is correct
10 Correct 5 ms 27228 KB Output is correct
11 Correct 5 ms 27228 KB Output is correct
12 Correct 5 ms 27228 KB Output is correct
13 Correct 6 ms 27228 KB Output is correct
14 Correct 6 ms 27228 KB Output is correct
15 Correct 6 ms 27228 KB Output is correct
16 Correct 6 ms 27228 KB Output is correct
17 Correct 6 ms 27480 KB Output is correct
18 Correct 6 ms 27228 KB Output is correct
19 Correct 6 ms 27228 KB Output is correct
20 Correct 7 ms 27228 KB Output is correct
21 Incorrect 7 ms 27228 KB Output isn't correct
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 27228 KB Output is correct
2 Correct 5 ms 27228 KB Output is correct
3 Correct 5 ms 27228 KB Output is correct
4 Correct 5 ms 27228 KB Output is correct
5 Correct 7 ms 27228 KB Output is correct
6 Correct 5 ms 27224 KB Output is correct
7 Correct 5 ms 27228 KB Output is correct
8 Correct 6 ms 27228 KB Output is correct
9 Correct 5 ms 27228 KB Output is correct
10 Correct 5 ms 27228 KB Output is correct
11 Correct 5 ms 27228 KB Output is correct
12 Correct 5 ms 27228 KB Output is correct
13 Correct 6 ms 27228 KB Output is correct
14 Correct 6 ms 27228 KB Output is correct
15 Correct 6 ms 27228 KB Output is correct
16 Correct 6 ms 27228 KB Output is correct
17 Correct 6 ms 27480 KB Output is correct
18 Correct 6 ms 27228 KB Output is correct
19 Correct 6 ms 27228 KB Output is correct
20 Correct 7 ms 27228 KB Output is correct
21 Incorrect 7 ms 27228 KB Output isn't correct
22 Halted 0 ms 0 KB -