#define _CRT_SECURE_NO_DEPRECATE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define all(v) v.begin(),v.end() using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; const ld epsylon = 1e-9; typedef unsigned int ui; inline long double get_time(){ return (long double)clock()/CLOCKS_PER_SEC; }; double sqr(double x) {return x*x;} const double G = -9.81; int vx = 5; int n; vector > tv; //int t[100001]; double v[100002]; int Q; double q[100001]; double calcy(int i) { double tm = q[i]; int to; for (to = 0; to < n; ++to) if ((double)tv[to].first > tm) break; double wher = 0.0; int tc = 0; for (int j = 0; j < to; ++j) { wher += .5f * G * sqr(tv[j].first - tc) + (tv[j].first - tc)*(j?tv[j-1].second:0); tc = tv[j].first; } double tmm; if (to==0) tmm = tm, wher += .5f*G*sqr(tmm); else { tmm = tm - (tv[to-1].first); wher += .5f*G*sqr(tmm) + tv[to].second * tmm; } return wher; } int main() { freopen("ball.in","r",stdin); freopen("ball.out","w",stdout); //program scanf("%d\n", &n); int t; double v; double prevv = 0.0; for (int i = 1; i <= n; ++i) { scanf("%d %lf\n", &t, &v); tv.push_back(make_pair(t, v)); prevv = v; } tv.push_back(make_pair(1000000000, prevv)); sort(tv.begin(), tv.end()); scanf("%d\n", &Q); for (int i = 0; i < Q; ++i) scanf("%lf", &q[i]); for (int i = 0; i < Q; ++i) { double x = q[i] * vx, y = calcy(i); printf("%.3f %.3f\n", x, y); } //end program return 0; }