Submission #1201776

#TimeUsernameProblemLanguageResultExecution timeMemory
1201776AvianshShortcut (IOI16_shortcut)C++20
0 / 100
1 ms328 KiB
#include "shortcut.h"

#include <bits/stdc++.h>

using namespace std;

long long find_shortcut(int n, vector<int> lens, vector<int> d, int c){
    long long ans = 2e18;
    for(int l = 0;l<n;l++){
        for(int r = l+1;r<n;r++){
            //len inds from l -> r-1
            long long dist = d[0];
            long long maxima = dist;
            for(int i = 0;i<n-1;i++){
                dist+=lens[i];
                if(i==r-1){
                    priority_queue<array<long long,2>,vector<array<long long,2>>, greater<array<long long,2>>>pq;
                    pq.push({0,r});
                    pq.push({c,l});
                    long long di[n];
                    fill(di,di+n,2e18);
                    while(!pq.empty()){
                        array<long long,2> a = pq.top();
                        pq.pop();
                        if(di[a[1]]<=a[0])
                            continue;
                        di[a[1]]=a[0];
                        if(a[1]){
                            pq.push({a[0]+lens[a[1]-1],a[1]-1});
                        }
                        if(a[1]<n-1){
                            pq.push({a[0]+lens[a[1]],a[1]+1});
                        }
                    }
                    for(int i = 0;i<n;i++){
                        if(i==r)
                            continue;
                        di[i]+=d[i];
                    }
                    dist=*max_element(di,di+r);
                }
                maxima=max(maxima,dist+d[i+1]);
                dist=max(dist,(long long)d[i+1]);
            }
            ans=min(ans,maxima);
        }
    }
    return ans;
}

Compilation message (stderr)

shortcut.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
shortcut_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...