Submission #1732260
Source Code Expand
#include <iostream> #include <iomanip> #include <vector> #include <algorithm> #include <cstring> #include <map> #include <queue> #include <cmath> #include <complex> // complex<double> a(1.2 , 2.3);// real(): 1.2, imag()2.3 using namespace std; #define MOD 1000000007 #define ll long long #define ld long double #define FOR(i,a,b) for(ll i=(ll)a;i<(ll)b;i++) #define rep(i,n) FOR(i,0,n) #define pb push_back #define mp make_pair #define all(a) a.begin(),a.end() #define rall(a) a.rbegin(),a.rend() #define rmsame(a) sort(all(a)),a.erase(unique(all(a)), a.end()) #define rmvector(a,b) rep(i,a.size())rep(j,b.size())if(a[i]==b[j]){a.erase(a.begin()+i);i--;break;} template<typename X> bool exist(vector<X> vec, X item){return find(all(vec), item)!=vec.end();} int main(){ cin.tie(0); ios::sync_with_stdio(false); ll N ; cin >> N; vector<ld>t,limv; rep(i,N){ ll inp; cin >> inp; t.pb(inp); } rep(i,N){ ll inp; cin >> inp; limv.pb(inp); } vector<ld>v; //まずはvの初期値を入れる v.pb(0); for(ll i=0 ; i<N-1 ; i++){ ld lim = min(limv[i], limv[i+1]); v.pb(lim); } v.pb(0); //次は左から順に見て行く。 for(ll i = 0 ; i<v.size()-1 ; i++){ if(v[i+1]>v[i])v[i+1] = min(v[i+1], v[i]+t[i]); } //次は右から順に見て行く。 for(ll i =v.size()-1 ; i>=1 ; i--){ if(v[i-1]>v[i])v[i-1] = min(v[i-1], v[i]+t[i-1]); } ld ans = 0.0; //両サイドの速度、その空間の制限速度より、そこの面積を出せる。 //v[i]とv[i+1], limv[i]で囲む面積 for(ll i = 0;i<v.size()-1;i++){ ld l = v[i], r = v[i+1], lim = limv[i]; if(l>r) swap(l,r); if(lim == r) ans += (l+(l+t[i]))*t[i]*0.5 - (l+t[i]-r)*(l+t[i]-r)*0.5; else{ ld x = 0.5*(t[i]+r-l); ld y = 0.5*(t[i]-r+l); ld top = l+x-limv[i]; if(top<0)top = 0; x -=top, y-=top; top*=2; if(top>0) ans += ( (l+ l+x )*x*0.5 + (r+y + r)*y*0.5 + top*limv[i] ) ; else ans += ( (l+ l+x )*x*0.5 + (r+y + r)*y*0.5 ); } } cout << fixed << setprecision(16) << ans << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - AtCoder Express |
User | ukohank517 |
Language | C++14 (GCC 5.4.1) |
Score | 400 |
Code Size | 2227 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 |