/* PARTIEL TEMPS */ // Runtime error: doit-ĂȘtre relative au temps d'exĂ©cution, // Je n'ai pas eu le temps d'optimiser plus #include #include #include using namespace std; int main() { int n; vector> discos; int input1, input2; cin >> n; for (int i=0; i < n; i++) { cin >> input1; cin >> input2; discos.push_back(pair(input1, input2)); } // On trie par ordre lexicographique sur (-x[0], x[1]) sort( begin(discos), end(discos), [](pair a, pair b) { return !(-a.second>-b.second || (a.second==b.second && a.first > b.first)); } ); int discount = 1; int balance = 0; // On calcule le discount et les achats for (int i=0; i < n; i++) { balance -= discos[i].first / discount; discount *= discos[i].second; } cout << (-balance) << "\n"; }