제출 #1203089

#제출 시각아이디문제언어결과실행 시간메모리
1203089onbertRoller Coaster Railroad (IOI16_railroad)C++20
0 / 100
216 ms25748 KiB
#include "railroad.h" #include <bits/stdc++.h> using namespace std; #define int long long const int INF = 1e15; const int maxn = 4e5 + 5; int sz; vector<int> vals = {-INF}; int dc(int x) {return lower_bound(vals.begin(), vals.end(), x) - vals.begin();} int n; vector<int> adj[maxn]; int sum[maxn]; bool dp[maxn]; long long plan_roller_coaster(vector<int32_t> s, vector<int32_t> t) { n = s.size(); for (int i=0;i<n;i++) { vals.push_back(s[i]); vals.push_back(t[i]); } sort(vals.begin(), vals.end()); vals.erase(unique(vals.begin(), vals.end()), vals.end()); sz = vals.size() - 1; for (int i=0;i<n;i++) s[i] = dc(s[i]), t[i] = dc(t[i]); for (int i=0;i<n;i++) { adj[s[i]].push_back(t[i]); } for (int i=1;i<=sz;i++) sort(adj[i].begin(), adj[i].end()); for (int i=0;i<n;i++) sum[s[i]]--, sum[t[i]]++; for (int i=1;i<=sz;i++) sum[i] += sum[i-1]; if (*min_element(sum+1, sum+sz+1) <= -2) return 1; for (int i=0;i<n;i++) if (s[i] == 1 && t[i] == sz) { if (*min_element(t.begin(), t.end()) > 1 && *max_element(s.begin(), s.end()) < sz) return 1; } dp[sz+1] = 1; for (int i=sz;i>=1;i--) { if (sum[i] == -1 || !dp[i+1]) dp[i] = 0; else dp[i] = 1; for (int v:adj[i]) if (v > i && dp[v+1]) dp[i] = 1; } if (!dp[1]) return 1; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

railroad.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
railroad_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...