Submission #1723275
Source Code Expand
#include <algorithm> #include <iostream> #include <vector> #include <map> #include <cmath> #include <cstdio> #include <cstring> #include <chrono> #include <numeric> using namespace std; double limit[101]; bool used[101]; double t[101]; double v[101]; int main(){ int n; int used_count = 0; cin >> n; for (int i=0;i<n;i++) { cin >> t[i]; } for (int i=0;i<n;i++) { cin >> v[i]; } limit[0] = 0; for (int i=1;i<n;i++) { limit[i] = v[i-1] < v[i]?v[i-1]:v[i]; } limit[n] = 0; for (int i=0;i<=n;i++) { used[i] = false; } while (used_count <= n) { int min_idx; double min_limit = 1000; for (int i=0;i<=n;i++) { if (limit[i] < min_limit && !used[i]) { min_limit = limit[i]; min_idx = i; } } if (min_idx > 0) { double new_left = limit[min_idx] + t[min_idx - 1]; limit[min_idx - 1] = limit[min_idx - 1] < new_left?limit[min_idx - 1]:new_left; } if (min_idx < n) { double new_right = limit[min_idx] + t[min_idx]; limit[min_idx + 1] = limit[min_idx + 1] < new_right?limit[min_idx + 1]:new_right; } used[min_idx] = true; used_count++; } double max_dist = 0.0; for (int i=0;i<n;i++) { double t_ceiling_1, t_ceiling_2, t_cross, v_cross; t_ceiling_1 = v[i] - limit[i]; t_ceiling_2 = v[i] - limit[i+1]; t_cross = (t[i] + limit[i+1] - limit[i])/2; v_cross = t_cross + limit[i]; if (v_cross <= v[i]) { max_dist += (limit[i]+v_cross)*t_cross/2 + (limit[i+1]+v_cross)*(t[i]-t_cross)/2; } else { max_dist += (limit[i]+v[i]) * t_ceiling_1/2 + v[i] * (t[i] - t_ceiling_1 - t_ceiling_2) + (limit[i+1]+v[i]) * t_ceiling_2/2; } } printf("%.10f\n", max_dist); }
Submission Info
Submission Time | |
---|---|
Task | D - AtCoder Express |
User | ntgo |
Language | C++14 (GCC 5.4.1) |
Score | 400 |
Code Size | 1788 Byte |
Status | AC |
Exec Time | 1 ms |
Memory | 256 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | s1.txt, s2.txt, s3.txt, s4.txt, s5.txt |
All | in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, s1.txt, s2.txt, s3.txt, s4.txt, s5.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
in01.txt | AC | 1 ms | 256 KB |
in02.txt | AC | 1 ms | 256 KB |
in03.txt | AC | 1 ms | 256 KB |
in04.txt | AC | 1 ms | 256 KB |
in05.txt | AC | 1 ms | 256 KB |
in06.txt | AC | 1 ms | 256 KB |
in07.txt | AC | 1 ms | 256 KB |
in08.txt | AC | 1 ms | 256 KB |
in09.txt | AC | 1 ms | 256 KB |
in10.txt | AC | 1 ms | 256 KB |
in11.txt | AC | 1 ms | 256 KB |
in12.txt | AC | 1 ms | 256 KB |
in13.txt | AC | 1 ms | 256 KB |
in14.txt | AC | 1 ms | 256 KB |
in15.txt | AC | 1 ms | 256 KB |
in16.txt | AC | 1 ms | 256 KB |
in17.txt | AC | 1 ms | 256 KB |
in18.txt | AC | 1 ms | 256 KB |
in19.txt | AC | 1 ms | 256 KB |
in20.txt | AC | 1 ms | 256 KB |
in21.txt | AC | 1 ms | 256 KB |
in22.txt | AC | 1 ms | 256 KB |
in23.txt | AC | 1 ms | 256 KB |
in24.txt | AC | 1 ms | 256 KB |
in25.txt | AC | 1 ms | 256 KB |
in26.txt | AC | 1 ms | 256 KB |
in27.txt | AC | 1 ms | 256 KB |
in28.txt | AC | 1 ms | 256 KB |
in29.txt | AC | 1 ms | 256 KB |
in30.txt | AC | 1 ms | 256 KB |
in31.txt | AC | 1 ms | 256 KB |
in32.txt | AC | 1 ms | 256 KB |
in33.txt | AC | 1 ms | 256 KB |
in34.txt | AC | 1 ms | 256 KB |
in35.txt | AC | 1 ms | 256 KB |
s1.txt | AC | 1 ms | 256 KB |
s2.txt | AC | 1 ms | 256 KB |
s3.txt | AC | 1 ms | 256 KB |
s4.txt | AC | 1 ms | 256 KB |
s5.txt | AC | 1 ms | 256 KB |