#include <iostream>
#include <algorithm>
#include <stdio.h>

struct dablniz
{
    double plata;
    double porez;
};
using namespace std;

void spoji(dablniz niz[], int l, int m, int d)
{
    int n1 = m - l + 1;
    int n2 = d - m;
    dablniz L[n1], D[n2];
    for (int i = 0; i < n1; i++) {
        L[i].plata = niz[l + i].plata;
        L[i].porez = niz[l + i].porez;
    }

    for (int j = 0; j < n2; j++) {
        D[j].plata = niz[m + 1 + j].plata;
        D[j].porez = niz[m + 1 + j].porez;
    }

    int i = 0;
    int j = 0;
    int k = l;
 
    while (i < n1 && j < n2) {
        if (L[i].porez <= D[j].porez) {
            niz[k].plata = L[i].plata;
            niz[k].porez = L[i].porez;
            i++;
        }
        else {
            niz[k].plata = D[j].plata;
            niz[k].porez = D[j].porez;
            j++;
        }
        k++;
    }

    while (i < n1) {
        niz[k].plata = L[i].plata;
        niz[k].porez = L[i].porez;
        i++;
        k++;
    }

    while (j < n2) {
        niz[k].plata = D[j].plata;
        niz[k].porez = D[j].porez;
        j++;
        k++;
    }
}
void mergeSort(dablniz niz[],int l,int d){
    if(l>=d){
        return;
    }
    int m = (l+d-1)/2;
    mergeSort(niz,l,m);
    mergeSort(niz,m+1,d);
    spoji(niz,l,m,d);
}
 
int main()
{
    short int n;
    cin >> n;
    dablniz a[n];
    for (int i = 0; i < n; i++)
    {
        cin >> a[i].plata >> a[i].porez;
    }
    mergeSort(a, 0, n - 1);
    double max = 0;
    double z = 0;
    for (int i = n - 1; i >= 0; i--)
    {
        z = z + a[i].plata;
        if (z * a[i].porez / 100 > max) {
            max = z * a[i].porez / 100;
        }
    }
    printf("%f", max);

}