diff options
author | InigoGutierrez <inigogf.95@gmail.com> | 2019-05-30 00:09:41 +0200 |
---|---|---|
committer | InigoGutierrez <inigogf.95@gmail.com> | 2019-05-30 00:09:41 +0200 |
commit | a2f8291e333ca877ed14897f6894a8f6ace3229e (patch) | |
tree | ec87ee23e5a2ab5553c8dea864bb74fdd9535642 /c/511_Houston.cpp | |
parent | 4bb619b53c226d597b2911e78c3938b26d046dd4 (diff) | |
download | AceptaElReto-a2f8291e333ca877ed14897f6894a8f6ace3229e.tar.gz AceptaElReto-a2f8291e333ca877ed14897f6894a8f6ace3229e.zip |
Resuelto 511 en c++: Houston, necesito una verificación.
Diffstat (limited to 'c/511_Houston.cpp')
-rw-r--r-- | c/511_Houston.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
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 <iostream> + +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; + } +} |