// Wrongri-La Shower #include #include #include typedef std::tuple P; int N; int D[16]; int jobutu[1<<16], d[1<<16]; int main(){ scanf("%d", &N); for(int i=0;i> j & 1)){continue;} jobutu[i] += D[j] < 0; } } std::priority_queue

queue; d[0] = 100; queue.push(std::make_tuple(d[0], 0)); while(!queue.empty()){ P p = queue.top(); queue.pop(); int health, finished; std::tie(health, finished) = p; for(int i=0;i> i & 1){continue;} int newHealth = std::min(health+D[i], (jobutu[finished]+1) * 100), newFinished = finished | (1<= newHealth){continue;} d[newFinished] = newHealth; queue.push(std::make_tuple(d[newFinished], newFinished)); } } printf("%d\n", d[(1<