Submission #787531

#TimeUsernameProblemLanguageResultExecution timeMemory
787531fatemetmhrShortcut (IOI16_shortcut)C++17
23 / 100
2092 ms380 KiB
//  ~ Be Name Khoda ~  //

#include "shortcut.h"
#include <bits/stdc++.h>
//#pragma GCC optimize ("O3")
//#pragma GCC target("avx2")
//#pragma GCC optimize("unroll-loops,Ofast")

using namespace std;

typedef long long ll;

#define pb       push_back
#define mp       make_pair
#define all(x)   x.begin(), x.end()
#define fi       first
#define se       second

const int maxn  =  1e6   + 10;
const int maxn5 =  3e3   + 10;
const int maxnt =  1.2e6 + 10;
const int maxn3 =  1e3   + 10;
const int mod   =  1e9   + 7;
const int lg    =  20;
const ll  inf   =  1e18;

int n;
ll c;
vector <ll> d;
ll ps[maxn5], ps2[maxn5];
set <pair<ll, int>> av;
vector <pair<int, ll>> adj[maxn5];

ll dis(int a, int b){
    if(a > b)
        swap(a, b);
    return ps[b] - ps[a];
}

long long find_shortcut(int N, std::vector<int> l, std::vector<int> D, int C)
{
    n = N;
    c = C;
    for(auto u : D)
        d.pb(u);
    ps[0] = 0;
    for(int i = 1; i < n; i++)
        ps[i] = ps[i - 1] + l[i - 1];
    ll mn = inf;
    for(int i = 0; i < n; i++) for(int j = 0; j < n; j++){
        ll mx = 0;
        for(int x = 0; x < n; x++) for(int y = x + 1; y < n; y++){
            mx = max(mx, d[x] + d[y] + min({dis(x, y), dis(x, i) + c + dis(y, j), dis(x, j) + c + dis(y, i)}));
            //cout << i << ' ' << j << ' ' << x << ' ' << y << ' ' << dis(x, y) << ' ' <<  dis(x, i) + c + dis(y, j) << ' ' << dis(x, j) + c + dis(y, i) << endl;
        }
        mn = min(mn, mx);
        //cout << i << ' ' << j << ' ' << mn << endl;
    }
    return mn;
}

















#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...