Submission #379961

#TimeUsernameProblemLanguageResultExecution timeMemory
379961Pichon5Roller Coaster Railroad (IOI16_railroad)C++17
34 / 100
126 ms73452 KiB
#include "railroad.h" #include<bits/stdc++.h> #define lcm(a,b) (a/__gcd(a,b))*b #define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define ll long long int #define vi vector<int> #define vll vector<ll> #define pb push_back #define F first #define S second #define mp make_pair //salida rapida "\n" //DECIMALES fixed<<sp(n)<<x<<endl; //gcd(a,b)= ax + by //lCB x&-x //set.erase(it) - ersases the element present at the required index//auto it = s.find(element) //set.find(element) - iterator pointing to the given element if it is present else return pointer pointing to set.end() //set.lower_bound(element) - iterator pointing to element greater than or equal to the given element //set.upper_bound(element) - iterator pointing to element greater than the given element // | ^ //__builtin_popcount(x) using namespace std; ll dp[200000][20];//subset y anterior vi S,T; int n; ll f(int m, int ant,int pos){ if(pos==n){ return 0ll; } if(dp[m][ant]!=-1){ return dp[m][ant]; } dp[m][ant]=1e18; if(pos==0){ for(int i=0;i<n;i++){ dp[m][ant]=min(dp[m][ant],f((1<<i),i,pos+1)); } }else{ for(int i=0;i<n;i++){ if((1<<i)&m){continue;} int aux=max((T[ant]-S[i]),0); dp[m][ant]=min(dp[m][ant],f(m+(1<<i),i,pos+1)+aux); } } return dp[m][ant]; } long long plan_roller_coaster(vector<int> s,vector<int> t) { n = (int) s.size(); S=s;T=t; for(int i=0;i<200000;i++){ for(int l=0;l<20;l++){ dp[i][l]=-1; } } return f(0,0,0); return 0; } // 4 1 7 4 3 5 8 6 6
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...