Submission #1357088

#TimeUsernameProblemLanguageResultExecution timeMemory
1357088Ahmed_Solyman휴가 (IOI14_holiday)C++20
Compilation error
0 ms0 KiB

/*
In the name of Allah
made by: Ahmed_Solyman
*/
#include "holiday.h"
#include <bits/stdc++.h>
#include <ext/rope>

using namespace std;
using namespace __gnu_cxx;
#pragma GCC optimize("-Ofast")
#pragma GCC optimize("-O1")
//-------------------------------------------------------------//
typedef long long ll;
typedef unsigned long long ull;
#define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define PI acos(-1)
#define lb lower_bound
#define ub upper_bound
#define all(v) v.begin(),v.end()
#define allr(v) v.rbegin(),v.rend()
#define pb push_back
#define pf push_front
#define endl "\n"
#define fil(arr,x) memset(arr,x,sizeof(arr))
int dx[8]={0,1,0,-1,1,1,-1,-1};
int dy[8]={1,0,-1,0,1,-1,-1,1};
//-------------------------------------------------------------//
ll lcm(ll a,ll b)
{
    return (max(a,b)/__gcd(a,b))*min(a,b);
}
vector<int>vec;
int val[100005];
struct segtree{
    vector<ll>tree;
    vector<int>cnt;
    int size;
    void init(int n){
        size=n;
        tree.assign(n*4+5,0LL);
        cnt.assign(n*4+5,0);
    }
    void insert(int l,int r,int p,int i){
        if(l==r){
            tree[p]+=val[i];
            cnt[p]++;
            return;
        }
        int mid=(l+r)/2;
        if(i>mid) insert(mid+1,r,p*2+1,i);
        else insert(l,mid,p*2,i);
        tree[p]=tree[p*2]+tree[p*2+1];
        cnt[p]=cnt[p*2]+cnt[p*2+1];
    }
    void insert(int i){
        insert(1,size,1,i);
    }
    void erase(int l,int r,int p,int i){
        if(l==r){
            tree[p]-=val[i];
            cnt[p]--;
            return;
        }
        int mid=(l+r)/2;
        if(i>mid) erase(mid+1,r,p*2+1,i);
        else erase(l,mid,p*2,i);
        tree[p]=tree[p*2]+tree[p*2+1];
        cnt[p]=cnt[p*2]+cnt[p*2+1];
    }
    void erase(int i){
        erase(1,size,1,i);
    }
    ll query(int l,int r,int p,int k){
        int mid=(l+r)/2;
        if (cnt[p*2+1]>=k)
            return query(mid+1,r,p*2+1,k);
        else
            return query(l,mid,p*2,k-cnt[p*2+1]) + tree[p*2+1];
    }
    ll maxk(int k){
        if (k<=0)return 0LL;
        return query(1,size,1,k);
    }
}sg;
int L=0,R=0;
void update(int l,int r) {
    while (R<r)sg.insert(vec[++R]);
    while (L>l)sg.insert(vec[--L]);
    while (R>r)sg.erase(vec[R--]);
    while (L<l)sg.erase(vec[L++]);
}
ll dp[100005];
void solve(int l,int r,int optl,int optr,int d,int s) {
    if (l>r)return;
    int mid=l+r>>1;
    int opt=optl;
    for (int j=optl;j<=optr;j++) {
        int x=min(s-j,mid-s) + (mid-j);
        update(j,mid);
        ll ans=sg.maxk(d-x);
        if (ans>dp[mid])
            dp[mid]=ans,opt=j;
    }
    solve(l,mid-1,optl,opt,d,s);
    solve(mid+1,r,opt,optr,d,s);
}
long long int findMaxAttraction(int n,int s,int d,int a[]) {
    /*
     * x=min(r-s,s-l) + (r-l)
     * dp[l][r] = max(l,r,d-x)
    */
    set<int>st;
    for (auto i:a)vec.push_back(i),st.insert(i);
    int cnt=1;
    map<int,int>mp;
    for (auto i:st)
        mp[i]=cnt,val[cnt++]=i;
    for (auto i:vec)i=mp[i];
    sg.init(n);
    sg.insert(a[0]);
    solve(s,n-1,0,s,d,s);
    ll ans=0;
    for (int i=s;i<n;i++)
        ans=max(ans,dp[i]);
    return ans;
}

Compilation message (stderr)

holiday.cpp: In function 'long long int findMaxAttraction(int, int, int, int*)':
holiday.cpp:115:17: error: 'begin' was not declared in this scope
  115 |     for (auto i:a)vec.push_back(i),st.insert(i);
      |                 ^
holiday.cpp:115:17: note: suggested alternatives:
In file included from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:166,
                 from holiday.cpp:7:
/usr/include/c++/13/valarray:1238:5: note:   'std::begin'
 1238 |     begin(const valarray<_Tp>& __va) noexcept
      |     ^~~~~
In file included from /usr/include/c++/13/bits/ranges_algobase.h:38,
                 from /usr/include/c++/13/bits/ranges_algo.h:38,
                 from /usr/include/c++/13/algorithm:63,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51:
/usr/include/c++/13/bits/ranges_base.h:489:44: note:   'std::ranges::__cust::begin'
  489 |     inline constexpr __cust_access::_Begin begin{};
      |                                            ^~~~~
In file included from /usr/include/c++/13/filesystem:50,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:200:
/usr/include/c++/13/bits/fs_dir.h:607:3: note:   'std::filesystem::__cxx11::begin'
  607 |   begin(recursive_directory_iterator __iter) noexcept
      |   ^~~~~
In file included from /usr/include/c++/13/bits/stl_iterator_base_types.h:71,
                 from /usr/include/c++/13/bits/stl_algobase.h:65,
                 from /usr/include/c++/13/algorithm:60:
/usr/include/c++/13/bits/iterator_concepts.h:984:10: note:   'std::ranges::__cust_access::begin'
  984 |     void begin(const auto&) = delete;
      |          ^~~~~
holiday.cpp:115:17: error: 'end' was not declared in this scope
  115 |     for (auto i:a)vec.push_back(i),st.insert(i);
      |                 ^
holiday.cpp:115:17: note: suggested alternatives:
/usr/include/c++/13/valarray:1265:5: note:   'std::end'
 1265 |     end(const valarray<_Tp>& __va) noexcept
      |     ^~~
/usr/include/c++/13/bits/ranges_base.h:490:42: note:   'std::ranges::__cust::end'
  490 |     inline constexpr __cust_access::_End end{};
      |                                          ^~~
/usr/include/c++/13/bits/fs_dir.h:612:3: note:   'std::filesystem::__cxx11::end'
  612 |   end(recursive_directory_iterator) noexcept
      |   ^~~
/usr/include/c++/13/bits/ranges_base.h:137:10: note:   'std::ranges::__cust_access::end'
  137 |     void end(const auto&) = delete;
      |          ^~~