import java.util.Collections;
import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		// 入力値の取得
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		double sum = 0;
		PriorityQueue<Integer> pq = new PriorityQueue<> (Collections.reverseOrder());
		
		for (int i = 0; i < N; i++) {
			int Ai = sc.nextInt();
			sum += Ai;
			pq.add(Ai);
		}
		
		double threshold = sum / (4 * M);
		
		boolean result = true;
		for (int i = 0; i < M; i++) {
			if (pq.poll() < threshold) {
				result = false;
				break;
			}
		}
		// 結果の出力
		System.out.println(result?"Yes":"No");

		sc.close();
	}

} import java.util.Collections; Collections java.util import java.util.PriorityQueue; PriorityQueue java.util import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		// 入力値の取得
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		double sum = 0;
		PriorityQueue<Integer> pq = new PriorityQueue<> (Collections.reverseOrder());
		
		for (int i = 0; i < N; i++) {
			int Ai = sc.nextInt();
			sum += Ai;
			pq.add(Ai);
		}
		
		double threshold = sum / (4 * M);
		
		boolean result = true;
		for (int i = 0; i < M; i++) {
			if (pq.poll() < threshold) {
				result = false;
				break;
			}
		}
		// 結果の出力
		System.out.println(result?"Yes":"No");

		sc.close();
	}

} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		// 入力値の取得
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		double sum = 0;
		PriorityQueue<Integer> pq = new PriorityQueue<> (Collections.reverseOrder());
		
		for (int i = 0; i < N; i++) {
			int Ai = sc.nextInt();
			sum += Ai;
			pq.add(Ai);
		}
		
		double threshold = sum / (4 * M);
		
		boolean result = true;
		for (int i = 0; i < M; i++) {
			if (pq.poll() < threshold) {
				result = false;
				break;
			}
		}
		// 結果の出力
		System.out.println(result?"Yes":"No");

		sc.close();
	} main {
		Scanner sc = new Scanner(System.in);

		// 入力値の取得
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		double sum = 0;
		PriorityQueue<Integer> pq = new PriorityQueue<> (Collections.reverseOrder());
		
		for (int i = 0; i < N; i++) {
			int Ai = sc.nextInt();
			sum += Ai;
			pq.add(Ai);
		}
		
		double threshold = sum / (4 * M);
		
		boolean result = true;
		for (int i = 0; i < M; i++) {
			if (pq.poll() < threshold) {
				result = false;
				break;
			}
		}
		// 結果の出力
		System.out.println(result?"Yes":"No");

		sc.close();
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc int M = sc.nextInt(); M sc.nextInt() sc.nextInt sc double sum = 0; sum 0 PriorityQueue<Integer> pq = new PriorityQueue<> (Collections.reverseOrder()); pq new PriorityQueue<> (Collections.reverseOrder()) for (int i = 0; i < N; i++) {
			int Ai = sc.nextInt();
			sum += Ai;
			pq.add(Ai);
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			int Ai = sc.nextInt();
			sum += Ai;
			pq.add(Ai);
		} {
			int Ai = sc.nextInt();
			sum += Ai;
			pq.add(Ai);
		} int Ai = sc.nextInt(); Ai sc.nextInt() sc.nextInt sc sum += Ai sum Ai pq.add(Ai) pq.add pq Ai double threshold = sum / (4 * M); threshold sum / (4 * M) sum (4 * M) 4 M boolean result = true; result true for (int i = 0; i < M; i++) {
			if (pq.poll() < threshold) {
				result = false;
				break;
			}
		} int i = 0; int i = 0; i 0 i < M i M i++ i++ i {
			if (pq.poll() < threshold) {
				result = false;
				break;
			}
		} {
			if (pq.poll() < threshold) {
				result = false;
				break;
			}
		} if (pq.poll() < threshold) {
				result = false;
				break;
			} pq.poll() < threshold pq.poll() pq.poll pq threshold {
				result = false;
				break;
			} result = false result false break; System.out.println(result?"Yes":"No") System.out.println System.out System System.out result?"Yes":"No" result "Yes" "No" sc.close() sc.close sc String[] args args public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		// 入力値の取得
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		double sum = 0;
		PriorityQueue<Integer> pq = new PriorityQueue<> (Collections.reverseOrder());
		
		for (int i = 0; i < N; i++) {
			int Ai = sc.nextInt();
			sum += Ai;
			pq.add(Ai);
		}
		
		double threshold = sum / (4 * M);
		
		boolean result = true;
		for (int i = 0; i < M; i++) {
			if (pq.poll() < threshold) {
				result = false;
				break;
			}
		}
		// 結果の出力
		System.out.println(result?"Yes":"No");

		sc.close();
	}

} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		// 入力値の取得
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		double sum = 0;
		PriorityQueue<Integer> pq = new PriorityQueue<> (Collections.reverseOrder());
		
		for (int i = 0; i < N; i++) {
			int Ai = sc.nextInt();
			sum += Ai;
			pq.add(Ai);
		}
		
		double threshold = sum / (4 * M);
		
		boolean result = true;
		for (int i = 0; i < M; i++) {
			if (pq.poll() < threshold) {
				result = false;
				break;
			}
		}
		// 結果の出力
		System.out.println(result?"Yes":"No");

		sc.close();
	}

} Main
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		// 入力値の取得
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		double sum = 0;
		PriorityQueue<Integer> pq = new PriorityQueue<> (Collections.reverseOrder());
		
		for (int i = 0; i < N; i++) {
			int Ai = sc.nextInt();
			sum += Ai;
			pq.add(Ai);
		}
		
		double threshold = sum / (4 * M);
		
		boolean result = true;
		for (int i = 0; i < M; i++) {
			if (pq.poll() < threshold) {
				result = false;
				break;
			}
		}
		// 結果の出力
		System.out.println(result?"Yes":"No");

		sc.close();
	}

}
