Submission #575541

#TimeUsernameProblemLanguageResultExecution timeMemory
575541definitelynotmeeShortcut (IOI16_shortcut)C++98
23 / 100
2091 ms340 KiB
#include<bits/stdc++.h>
#include"shortcut.h"
#define mp make_pair
#define mt make_tuple
#define all(x) x.begin(), x.end()
#define ff first
#define ss second
using namespace std;
template <typename T>
using matrix = vector<vector<T>>;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const ll INFL = (1LL<<62)-1;
const int INF = (1<<30)-1;
const double EPS = 1e-7;
const int MOD = 1e9 + 7;
const int RANDOM = chrono::high_resolution_clock::now().time_since_epoch().count();
const int MAXN = 1e6+1;

long long find_shortcut(int n, std::vector<int> l, std::vector<int> d, int c){

    vector<ll> pref(n);
    for(int i = 1; i < n; i++){
        pref[i] = pref[i-1]+l[i-1];
    }
    ll resp = INFL, optl, optr;
    for(int l = 0; l < n; l++){
        for(int r = l+1; r < n; r++){
            ll maxi = 0;
            ll cycle = pref[r]-pref[l]+c;
            for(int i = 0; i < n; i++){
                for(int j = i+1; j < n; j++){
                    if(l <= i){
                        if(j <= r){
                            maxi = max(maxi,min(cycle-(pref[j]-pref[i]), pref[j]-pref[i]) + d[i]+d[j]);
                        } else {
                            //cout << l << ' ' << r << "=>" << i << ' ' << j << ": " << pref[j]-pref[r] << ' ' << pref[r]-pref[i] << ' ' << pref[i]-pref[l]+c << ' ' << d[i]+d[j] << '\n';
                            maxi = max(maxi, pref[j]-pref[r] + min(pref[r]-pref[i], pref[i]-pref[l]+c)+d[i]+d[j]);
                        }
                    } else {
                        if(j <= r){
                            maxi = max(maxi, pref[l]-pref[i] + min(pref[j]-pref[l], pref[r]-pref[j]+c)+d[i]+d[j]);
                        } else {
                            maxi = max(maxi,pref[j]-pref[i] - max(0ll,pref[r]-pref[l]-c)+d[i]+d[j]);
                        }
                    }
                }
            }
            if(maxi < resp){
                optl = l, optr = r;
            }
            resp = min(resp,maxi);
        }
    }
    //  cout << optl << ' ' << optr << '\n';
    return resp;
}

Compilation message (stderr)

shortcut.cpp: In function 'long long int find_shortcut(int, std::vector<int>, std::vector<int>, int)':
shortcut.cpp:29:21: warning: variable 'optl' set but not used [-Wunused-but-set-variable]
   29 |     ll resp = INFL, optl, optr;
      |                     ^~~~
shortcut.cpp:29:27: warning: variable 'optr' set but not used [-Wunused-but-set-variable]
   29 |     ll resp = INFL, optl, optr;
      |                           ^~~~
#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...