Submission #1214344

#TimeUsernameProblemLanguageResultExecution timeMemory
1214344inesfiRoller Coaster Railroad (IOI16_railroad)C++20
34 / 100
120 ms54708 KiB
#include "railroad.h"
#include<bits/stdc++.h>
using namespace std;

#define ll long long

const ll HASHMAXI=(1<<17),POSEC=18,INFINI=(ll)1000*1000*1000*1000;
ll memo[HASHMAXI][POSEC];
ll nb,fin;
vector<ll> limites,arrivees;

vector<ll> trouve(ll v){
    vector<ll> a;
    a.clear();
    while (v>0){
        a.push_back(v%2);
        v/=2;
    }
    while ((ll)a.size()!=nb){
        a.push_back(0);
    }
    return a;
}

ll dp(ll hash,ll dernierpris){
    if (memo[hash][dernierpris]!=-1){
        return memo[hash][dernierpris];
    }
    if (hash==fin){
        memo[hash][dernierpris]=0;
        return 0;
    }
    vector<ll> r=trouve(hash);
    ll val=INFINI;
    for (int i=0;i<nb;i++){
        if (r[i]==0){
            val=min(val,dp(hash+(1<<i),i)+max((ll)0,arrivees[dernierpris]-limites[i]));
        }
    }
    /*if (val!=INFINI){
        cout<<hash<<" "<<dernierpris<<endl;
    }*/
    memo[hash][dernierpris]=val;
    return val;
}

ll plan_roller_coaster(vector<int> l,vector<int> a) {
    nb=(ll)l.size();
    fin=(1<<nb)-1;
    for (auto i:l){
        limites.push_back(i);
    }
    for (auto i:a){
        arrivees.push_back(i);
    }
    arrivees.push_back(-1);
    for (int i=0;i<HASHMAXI;i++){
        for (int j=0;j<POSEC;j++){
            memo[i][j]=-1;
        }
    }
    /*vector<ll> debug=trouve(6);
    for (auto i:debug){
        cout<<i<<" ";
    }
    cout<<endl;*/
    return dp(0,nb);
}

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