제출 #1209208

#제출 시각아이디문제언어결과실행 시간메모리
1209208sanoRoller Coaster Railroad (IOI16_railroad)C++20
64 / 100
1263 ms144372 KiB
#include "railroad.h" #include<iostream> #include<vector> #include<queue> #include<deque> #include<string> #include<fstream> #include<algorithm> #include <iomanip> #include<map> #include <set> #include <unordered_map> #include <stack> #include <unordered_set> #include <cmath> #include <cstdint> #include <cassert> #include <bitset> #include <random> #include <chrono> #include <cstring> #define shit short int #define ll long long #define ld long double //#define int ll #define For(i, n) for(int i = 0; i < (int)n; i++) #define ffor(i, a, n) for(int i = (int)a; i < (int)n; i++) #define rfor(i, n) for(int i = (int)n; i >= (int)0; i--) #define rffor(i, a, n) for(int i = (int)n; i >= (int)a; i--) #define vec vector #define ff first #define ss second #define pb push_back #define pii pair<int, int> #define pld pair<ld, ld> #define NEK 2000000000000000 #define mod 1000000007 #define mod2 1000000009 #define rsz resize #define prv 43 #define prv2 47 #define D 8 #define trav(a,x) for (auto& a: x) #define pb push_back #define ub upper_bound #define lb lower_bound #define all(x) (x).begin(), (x).end() #define sig 0.0000001 using namespace std; ll pomale(vec<int>&s, vec<int>&t) { int n = s.size(); vec<vec<ll>> dp((1 << n), vec<ll>(n, NEK)); For(i, n) { dp[(1<<i)][i] = 0; } ffor(i, 1, (1<<n)) { For(j, n) { if (!((1 << j) & i)) continue; For(k, n) { if (k == j) continue; if (!((1 << k) & i)) continue; dp[i][j] = min(dp[i][j], dp[i - (1 << j)][k] + max((ll)0, (ll)t[k] - (ll)s[j])); } } } ll mini = NEK; For(i, n) { mini = min(mini, dp[(1 << n) - 1][i]); } return mini; } ll rychle(vec<int>& s, vec<int>& t) { //vsetko parne map<int, int> umap; set<int> roz; map<int, vec<int>> g; int n = s.size(); int mini = 1000000001; For(i, n) { roz.insert(s[i]); roz.insert(t[i]); umap[s[i]]--; umap[t[i]]++; mini = min(mini, s[i]); mini = min(mini, t[i]); g[s[i]].push_back(t[i]); } int pocet_roz = roz.size(); int zdola = 0; bool zle = 0; int pr = 0; map<int, vec<int>> g2 = g; for (auto i : umap) { if (zdola != 0) { g2[pr].push_back(i.ff); } pr = i.ff; int hod = i.ss + zdola; if (hod < 0) { zle = 1; break; } zdola = hod; } if (zdola != 0) zle = 1; if (zle == 0) { set<int> bol; queue<int> q; q.push(mini); while (!q.empty()) { int x = q.front(); q.pop(); if (bol.find(x) != bol.end()) continue; bol.insert(x); for (auto i : g2[x]) { q.push(i); } } if(bol.size() == pocet_roz) return 0; } zle = 0; zdola = umap[mini]; if (zdola < (-1)) return 1; zdola++; int prvy = 0; pr = 0; for (auto i : umap) { if (prvy == 0) { prvy = 1; pr = i.ff; continue; } if (zdola != 0) { g[pr].push_back(i.ff); } pr = i.ff; int hod = i.ss + zdola; if (hod < 0) { zle = 1; break; } zdola = hod; } if (zdola != 1) zle = 1; if (zle == 0) { set<int> bol; queue<int> q; q.push(mini); while (!q.empty()) { int x = q.front(); q.pop(); if (bol.find(x) != bol.end()) continue; bol.insert(x); for (auto i : g[x]) { q.push(i); } } if (bol.size() == pocet_roz) return 0; } return 1; } long long plan_roller_coaster(vector<int> s, vector<int> t) { int n = s.size(); if (n <= 16) return pomale(s, t); return rychle(s, t); } /* signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; vec<int> s(n), t(n); For(i, n) { cin >> s[i] >> t[i]; } cout << plan_roller_coaster(s, t) << '\n'; 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...