#include #include using namespace std; /* Мінімальний час F[j] для j покупців вибирати як найменшу суму з таких: F[j-3]+C[j-2] - j останній у трійці; F[j-2]+B[j-1] - j останній у парі; F[j-1]+A[j] - j одноосібник. */ ifstream fi; ofstream fo; int mintime(int n) // Функція із запам'ятовуванням усіх вхідних даних { vector A,B,C,F; int j,a,b,c; for (j=0; j>a>>b>>c; A.push_back(a); B.push_back(b); C.push_back(c); } F.push_back(A[0]); F.push_back(min(B[0],F[0]+A[1])); F.push_back(min(C[0],min(F[0]+B[1],F[1]+A[2]))); for (j=3; j>A>>B>>C; F = min(F3+C2, min(F2+B1, F1+A)); F3=F2; F2=F1; F1=F; B1=B; C2=C1; C1=C; } return F; } int main() { int n; fi.open("input.txt"); fo.open("output.txt"); fi >> n; fo << mintime(n) << endl; fi.close(); fo.close(); return 0; } /* Приклад вхідних даних 6 1 2 3 1 2 3 2 3 1 1 1 1 2 3 2 2 2 2 Приклад вихідних даних 4 */