Submission #1352548

#TimeUsernameProblemLanguageResultExecution timeMemory
1352548marizaHighest (CEOI25_highest)C++20
12 / 100
2097 ms41268 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
const ll INF=1e18;
#define MID ((l+r)/2)

vector<int> solve(vector<int> &v, vector<int> &w, vector<pair<int,int>> &q){
    ll n=v.size();
    vector<int> ans(q.size(),0);
    vector<pair<int,int>> q2[n];
    for(ll i=0; i<q.size(); i++){
        q2[q[i].first].push_back({q[i].second,i});
    }
    
    for(ll i=0; i<n; i++){
        set<pair<ll,ll>> s;
        s.insert({0,i});
        ll dist[n];

        for(ll j=i; j<n; j++){
            // cout<<i<<" "<<j<<endl;
            while((*s.begin()).second<j){
                // cout<<"Erase {"<<(*s.begin()).first<<", "<<(*s.begin()).second<<"}"<<endl;
                s.erase(s.begin());
            }
            // cout<<"ok"<<endl;
            dist[j]=(*s.begin()).first;
            // cout<<"ok"<<endl;
            s.insert({dist[j]+1,j+v[j]});
            s.insert({dist[j]+2,j+w[j]});
        }

        for(auto j:q2[i]){
            ans[j.second]=dist[j.first];
        }
    }

    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...