Submission #668914

#TimeUsernameProblemLanguageResultExecution timeMemory
668914someoneFun Tour (APIO20_fun)C++14
47 / 100
114 ms16516 KiB
#include "fun.h"
#include <bits/stdc++.h>
using namespace std;
 
const int N = 1e5 + 42, INF = 1e18 + 42;
 
int tmp[N];
 
vector<int> createFunTour(int n, int q) {
    int centroid = 0, dist = 0;
    for(int i = 1; i < n; i++)
        if(n - attractionsBehind(0, i) <= n/2) {
            int d = hoursRequired(0, i);
            if(d > dist) {
                dist = d;
                centroid = i;
            }
        }
    tmp[0] = dist;
    tmp[centroid] = 0;
    for(int i = 1; i < n; i++)
        if(i != centroid)
            tmp[i] = hoursRequired(i, centroid);
    priority_queue<pair<int, int>> pq;
    for(int i = 0; i < n; i++)
        pq.push({tmp[i], i});
    deque<int> pre;
    vector<int> ans;
    for(int i = 0; i < n; i++) {
        int id = pq.top().second;
        pq.pop();
        if(ans.empty())
            ans.push_back(id);
        else {
            int last = ans.back();
            if(tmp[last] + tmp[id] > hoursRequired(last, id))
                pre.push_back(id);
            else {
                ans.push_back(id);
                if(!pre.empty()) {
                    ans.push_back(pre[0]);
                    pre.pop_front();
                }
            }
        }
    }
    return ans;
}

Compilation message (stderr)

fun.cpp:5:36: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+18' to '2147483647' [-Woverflow]
    5 | const int N = 1e5 + 42, INF = 1e18 + 42;
      |                               ~~~~~^~~~
#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...