import java.io.BufferedInputStream;
import java.util.Arrays;
import java.util.Scanner;
import java.util.TreeSet;

public class P1140C {

	static int n,k;
	
	static P[] pairs;
	static class P implements Comparable<P>{
		int l,b;
		boolean sortFlag;
		
		public P(int le, int bu, boolean sf) {
			l=le;
			b=bu;
			sortFlag=sf;
		}
		
		public int compareTo(P p) {
			if (sortFlag) {
				if (l>p.l) {
					return 1;
				} else if (l<p.l) {
					return -1;
				} else {
					return b-p.b;
				}
			}
			if (b>p.b) {
				return 1;
			} else if (b<p.b) {
				return -1;
			} else {
				return 0;
//				return l-p.l;
			}
		}
	}
	
	public static void main(String[] args) {
		Scanner in = new Scanner(new BufferedInputStream(System.in));

		n = in.nextInt();
		k = in.nextInt();
		
		pairs = new P[n];
		
		for(int i=0; i<n; i++) {
			pairs[i] = new P(in.nextInt(), in.nextInt(), false);
		}
		
		Arrays.sort(pairs);
		
		for(int i=0; i<n; i++) {
			pairs[i].sortFlag=true;
		}
		
		
		TreeSet<P> tree = new TreeSet<>();
		
		long[] ans = new long[n];
		
		for(int j=n-2; j>=n-k; j--) {
			ans[j]=ans[j+1]+pairs[j+1].l;
			tree.add(pairs[j+1]);
		}
		
//		System.out.println(k-1==tree.size());
		
		if (k!=1)
			for(int j=n-k-1; j>=0; j--) {
				P p = tree.first();
				if (p.l<pairs[j+1].l) {
					tree.add(pairs[j+1]);
					tree.pollFirst();
					ans[j]=ans[j+1]-p.l+pairs[j+1].l;
				} else {
					ans[j]=ans[j+1];
				}
			}
		
		long sol=0;
		
		for(int i=0; i<n; i++) {
			sol=Math.max(sol, pairs[i].b*(pairs[i].l+ans[i]));
		}
		
		System.out.println(sol);
		
//		ans[n-1]=pairs[n-1].l;
//		tree.add(pairs[n-1].l);
//		for(int j=n-2; n-2>=0 && j>=n-(k-1); j--) {
//			ans[j]=ans[j+1]+pairs[j].l;
//			tree.add(pairs[j].l);
//		}
//		
//		for(int j=n-k; j>=0; j--) {
//			int l=tree.first();
//			if (pairs[j].l>l) {
//				tree.pollFirst();
//				tree.add(pairs[j].l);
//				ans[j]=ans[j]-l+pairs[j].l;
//			} else {
//				if (j+1<n)
//					ans[j]=ans[j+1];
//			}
//			
////			System.out.println(tree.size());
//		}
		
//		long sol=0;
//		
//		for(int i=0; i<n; i++) {
//			int bu=pairs[i].b;
//			
//			sol=Math.max(sol, i+1<n?bu*(ans[i+1]+pairs[i].l):bu*(ans[n-1]));
//		}
		
//		System.out.println(sol);
		
//		Arrays.sort(pairs2);
//		
//		long ans=0;
//		
//		for(int i=0; i<n; i++) {
//			int bu=pairs[i].b;
//			
//			int count=0;
//			long sum=0;
//			
//			for(int j=n-1; j>=0 && count<=k; j--) {
//				if (pairs2[j].b>=bu) {
//					sum+=pairs2[j].l;
//					count++;
//				}
//			}
//			
//			ans=Math.max(ans, sum*bu);
//		}
//		
//		System.out.println(ans);
	}

}
