Submission #1152902

#TimeUsernameProblemLanguageResultExecution timeMemory
1152902alexddRoller Coaster Railroad (IOI16_railroad)C++20
0 / 100
192 ms22308 KiB
#include "railroad.h" #include<bits/stdc++.h> using namespace std; #define int long long const int INF = 1e18; int n; vector<int> s,t; int brut() { vector<vector<int>> dp((1<<n),vector<int>(n,INF)); for(int i=0;i<n;i++) dp[(1<<i)][i]=0; for(int config=1;config<(1<<n);config++) { if(config == (config&(-config))) continue; for(int ult=0;ult<n;ult++) { if(!((1<<ult)&config)) continue; for(int p=0;p<n;p++) { if(p==ult || !((1<<p)&config)) continue; dp[config][ult] = min(dp[config][ult], dp[config-(1<<ult)][p] + max(0LL, t[p] - s[ult])); } } } int mnm=INF; for(int i=0;i<n;i++) mnm = min(mnm, dp[(1<<n)-1][i]); return mnm; } int isvalid() { vector<pair<int,int>> v; for(int i=0;i<n;i++) v.push_back({t[i],s[i]}); sort(v.begin(),v.end()); reverse(v.begin(),v.end()); set<pair<int,int>> libere; for(int i=0;i<n;i++) libere.insert({v[i].second, i}); for(int i=1;i<n;i++) { auto it = libere.lower_bound({v[i].first, -1}); //if(it!=libere.end() && (*it).second==i) // it++; if(it==libere.end()) return 0; libere.erase(it); } return 1; } long long plan_roller_coaster(std::vector<int32_t> cit_s, std::vector<int32_t> cit_t) { n = cit_s.size(); s.resize(n); t.resize(n); for(int i=0;i<n;i++) { s[i] = cit_s[i]; t[i] = cit_t[i]; } if(n<=16 && 0) return brut(); return 1 - isvalid(); if(isvalid()) return 0; sort(t.begin(),t.end()); sort(s.begin(),s.end()); vector<pair<int,int>> v; for(int i=0;i<n;i++) { if(i!=n-1) v.push_back({t[i],1}); if(i!=0) v.push_back({s[i],2}); } sort(v.begin(),v.end()); reverse(v.begin(),v.end()); int rez=0,dif=0; for(auto [val,tip]:v) { if(tip==1) { dif++; if(dif>0) rez += val; } else { if(dif>0) rez -= val; dif--; } } //for(int i=1;i<=cate;i++) // rez -= s[i]; //cerr<<cate<<" cate\n"; return rez; } /* 4 1 7 4 3 5 8 6 6 output: 3 */

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...