From a2f8291e333ca877ed14897f6894a8f6ace3229e Mon Sep 17 00:00:00 2001 From: InigoGutierrez Date: Thu, 30 May 2019 00:09:41 +0200 Subject: =?UTF-8?q?Resuelto=20511=20en=20c++:=20Houston,=20necesito=20una?= =?UTF-8?q?=20verificaci=C3=B3n.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- c/511_Houston.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 c/511_Houston.cpp (limited to 'c/511_Houston.cpp') diff --git a/c/511_Houston.cpp b/c/511_Houston.cpp new file mode 100644 index 0000000..d037fe0 --- /dev/null +++ b/c/511_Houston.cpp @@ -0,0 +1,40 @@ +#include + +using namespace std; + +int main() { + int groupsA, groupsB; // Grupos totales de cada vector + int iA, iB; // Índices para iterar por los vectores de grupos y valores + double step, total; // Cuántos valores van a sumarse en un solo paso y suma total + cout.precision(0); + while (cin >> groupsA && !cin.eof()) { + cin >> groupsB; + int lengthsA[groupsA], valuesA[groupsA]; // Tamaño de cada grupo y su valor + for (int a = 0; a < groupsA; a++) { + cin >> lengthsA[a]; + cin >> valuesA[a]; + } + int lengthsB[groupsB], valuesB[groupsB]; + for (int b = 0; b < groupsB; b++) { + cin >> lengthsB[b]; + cin >> valuesB[b]; + } + iA = 0; + iB = 0; + total = 0; + while (iA < groupsA) { // Hasta que se computen todos los grupos de A (A y B igual de largos) + // Computa a la vez tantas parejas iguales como se pueda (step) + step = min(lengthsA[iA], lengthsB[iB]); + total += step * valuesA[iA] * valuesB[iB]; + // Descuenta los valores computados de la longitud de cada grupo (al menos uno se vuelve cero) + lengthsA[iA] -= step; + lengthsB[iB] -= step; + // Cuando la longitud de un grupo es cero, empieza a considerar el siguiente grupo + if (!lengthsA[iA]) + iA++; + if (!lengthsB[iB]) + iB++; + } + cout << fixed << total << endl; + } +} -- cgit v1.2.1