Submission #1209170

#TimeUsernameProblemLanguageResultExecution timeMemory
1209170sanoRoller Coaster Railroad (IOI16_railroad)C++20
34 / 100
187 ms22284 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; int n = s.size(); int mini = 0; For(i, n) { umap[s[i]]--; umap[t[i]]++; mini = min(mini, s[i]); mini = min(mini, t[i]); } int zdola = 0; bool zle = 0; for (auto i : umap) { int hod = i.ss + zdola; if (hod < 0) { zle = 1; break; } zdola = hod; } if (zdola != 0) zle = 1; if (zle == 0) { return 0; } zle = 0; zdola = umap[mini]; if (zdola <= 0) return 1; zdola--; int prvy = 0; for (auto i : umap) { if (prvy == 0) { prvy = 1; continue; } int hod = i.ss + zdola; if (hod < 0) { zle = 1; break; } zdola = hod; } if (zdola != 1) zle = 1; if (zle == 0) { 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; }*/

Compilation message (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...