#include #include #define MAXN 100000 typedef long long int ll; typedef struct { int w; int h; } fosna; fosna seznam[MAXN]; int n; // Porovnávací funkce pro qsort() int fosna_cmp(const void *a, const void *b) { return ((const fosna *)b)->h - ((const fosna *)a)->h; } int main(void) { // Načteme všechny fošny scanf("%d",&n); for (int i = 0; i < n; i++) { int w, h; scanf("%d%d", &w, &h); if (w < h) seznam[i].h = h, seznam[i].w = w; else seznam[i].h = w, seznam[i].w = h; } // Setřídíme fošny od nejvyšší k nejnižší qsort(seznam, n, sizeof(fosna), fosna_cmp); ll Vmax = 0; // Zatím největší objem for (int i = 0; i < n; i++) { ll V = 0; // Aktuální objem int w = seznam[i].w; // Aktuální šířka int d = 0; // Aktuální tloušťka for (int j = 0; j < n; j++) { // Zkoušíme všechny fošny if (seznam[j].w >= w) { d++; // Přepočítáme aktuální kvádr V = (ll) d * w * seznam[j].h; if (V > Vmax) Vmax = V; } } } // Hle, výsledek! printf("%lld\n", Vmax); return 0; }