Submission #1083016

#TimeUsernameProblemLanguageResultExecution timeMemory
1083016SeungniSeptember (APIO24_september)C++17
0 / 100
1018 ms4956 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int, int>; #include "september.h" #include <vector> int n; vector<int> tree[100005]; vector<pii> graph[100005]; int dp[100005]; void DFS(int node) { for (int next: tree[node]) { DFS(next); dp[node] = max(dp[node], dp[next]); } } void make_graph(vector<int> &arr) { for (int i = 0; i < n - 1; i++) graph[i].clear(); for (int i = 0; i < n - 2; i++) graph[i].push_back({i + 1, 1}); for (int i = 1; i < n - 1; i++) graph[i].push_back({i - 1, 0}); vector<int> pos(n + 1); for (int i = 0; i < arr.size(); i++) pos[arr[i]] = i; for (int i = 1; i < n; i++) dp[i] = pos[i]; DFS(0); for (int i = 1; i < n; i++) { graph[pos[i]].push_back({dp[i], 0}); } } void Dijkstra(int start, vector<int> &dist) { fill(dist.begin(), dist.end(), 1e9); dist[start] = 1; priority_queue<pii, vector<pii>, greater<>> pq; pq.push({1, start}); while (pq.size()) { pii t = pq.top(); pq.pop(); int now = t.second, v = t.first; if (dist[v] < now) continue; for (auto &[next, cost]: graph[now]) { if (dist[next] > v + cost) { dist[next] = v + cost; pq.push({v + cost, next}); } } } } int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { for (int i = 0; i < F.size(); i++) tree[F[i]].push_back(i + 1); n = N; vector<int> dist[5]; for (int i = 0; i < S.size(); i++) { dist[i].resize(N + 5); make_graph(S[i]); Dijkstra(0, dist[i]); } vector<int> ans(N + 5, 1e9); for (int i = 0; i < S.size(); i++) { vector<int> now(N + 5); for (int j = 0; j < N - 1; j++) now[S[i][j]] = dist[i][j]; for (int j = 1; j < N; j++) ans[j] = min(ans[j], now[j]); } int ret = 0; for (int i = 1; i < N; i++) ret = max(ret, ans[i]); return 0; }

Compilation message (stderr)

september.cpp: In function 'void make_graph(std::vector<int>&)':
september.cpp:29:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |     for (int i = 0; i < arr.size(); i++) pos[arr[i]] = i;
      |                     ~~^~~~~~~~~~~~
september.cpp: In function 'int solve(int, int, std::vector<int>, std::vector<std::vector<int> >)':
september.cpp:61:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |     for (int i = 0; i < F.size(); i++) tree[F[i]].push_back(i + 1);
      |                     ~~^~~~~~~~~~
september.cpp:66:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |     for (int i = 0; i < S.size(); i++) {
      |                     ~~^~~~~~~~~~
september.cpp:74:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |     for (int i = 0; i < S.size(); i++) {
      |                     ~~^~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...