Rezultati

Up. imeNalogaJezikRezultatČas oddaje
ASMx64-2018 Prehod čez cesto C++ 0/100Napačen odgovor (WA) 04. okt '18 @ 18:41

Test Točke Porabljen spomin Porabljen čas Status
#1 0/9 3,125 MiB 0,004 s Napačen odgovor
Tvoj izhod:
​-98726.675163<<<EOF>>>
Pravilen izhod:
​109.4761904762
<<<EOF>>>
#2 0/9 3,277 MiB 0,004 s Napačen odgovor
Tvoj izhod:
​-942.570096<<<EOF>>>
Pravilen izhod:
​47.2242654830
<<<EOF>>>
#3 9/9 3,273 MiB 0,004 s OK
#4 9/9 3,277 MiB 0,000 s OK
#5 9/9 3,277 MiB 0,004 s OK
#6 9/9 3,273 MiB 0,000 s OK
#7 9/9 3,281 MiB 0,000 s OK
#8 9/9 3,273 MiB 0,004 s OK
#9 0/9 3,129 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1.200110<<<EOF>>>
Pravilen izhod:
​2.000000000
<<<EOF>>>
#10 9/9 3,277 MiB 0,000 s OK
#11 10/10 3,125 MiB 0,000 s OK

Ocenjevani program (prehod.cpp):
#include <iostream>
#include <vector>
#include <iomanip>
#include <algorithm>
using namespace std;

int Nn, M;
vector<pair<double, double>> vec;

int main() {
	cin >> Nn >> M;
	vec.reserve(100000);

	double N;
	double X, V, D;

	for (int i = 0; i < M; ++i) {
		cin >> N >> X >> V >> D;

		if (X * V > 0)
			continue;

		V *= -1.0;

		double t = X / V;
		if (t < 0) continue;

		t -= 10.0 * N;

		if (X > 0)
			X += D;
		else X -= D;

		double t2 = X / V;
		t2 -= 10.0 * (N - 1.0);

		vec.emplace_back(min(t, t2), max(t, t2));
	}
	
	sort(vec.begin(), vec.end());

	if (vec.front().first > 0.0) {
		cout << fixed << setprecision(6) << 0.0;
		return 0;
	}

	double ptr = vec.front().second;

	for (int i = 1; i < vec.size(); ++i) {
		if (vec[i].first > ptr) {
			cout << fixed << setprecision(6) << ptr;
			return 0;
		}
		ptr = vec[i].second;
	}

	cout << fixed << setprecision(6) << ptr;
	return 0;
}