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

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

void spoji(double niz[], int l, int m, int d, int plate[])
{
    int n1 = m - l + 1;
    int n2 = d - m;
    double L[n1], D[n2];
    int prvi[n1], drugi[n2];
    for (int i = 0; i < n1; i++) {
        L[i] = niz[l + i];
        prvi[i] = plate[l + i];
    }

    for (int j = 0; j < n2; j++) {
        D[j] = niz[m + 1 + j];
        drugi[j] = plate[m + 1 + j];
    }

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

    while (i < n1) {
        niz[k] = L[i];
        plate[k] = prvi[i];
        i++;
        k++;
    }

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

}