
import java.util.*;
import java.util.stream.Collectors;
import java.io.*;
import java.nio.charset.StandardCharsets;

public class Main {
	int N, M;
	List<Integer> A;
	boolean result = false;

	public static void main(String[] args) throws IOException {
		InputStreamReader reader = new InputStreamReader(System.in, StandardCharsets.UTF_8);
		BufferedReader in = new BufferedReader(reader);
		Main ins = new Main(in);
		ins.calc();
		ins.showResult();
	}

	Main(BufferedReader in) throws IOException {
		String[] tokens = in.readLine().split(" ");
		this.N = Integer.parseInt(tokens[0]);
		this.M = Integer.parseInt(tokens[1]);
		tokens = in.readLine().split(" ");
		this.A = new ArrayList<>(N);
		for (int i = 0; i < N; ++i) {
			this.A.add(Integer.parseInt(tokens[i]));
		}
		Collections.sort(this.A);
		Collections.reverse(this.A);
	}

	void calc() {
		int sum = 0;
		for (int i = 0; i < N; ++i) {
			sum += A.get(i);
		}
		double threshold = sum / (4.0 * (double) M);
		int count = 0;

		for (int i = 0; i < N; ++i) {
			if (A.get(i) < threshold) {
				break;
			}
			++count;
		}
		if (count >= M) {
			result = true;
		}
	}

	void showResult() {
		System.out.println(result ? "Yes" : "No");
	}

} import java.util.*; util.* java import java.util.stream.Collectors; Collectors java.util.stream import java.io.*; io.* java import java.nio.charset.StandardCharsets; StandardCharsets java.nio.charset public class Main {
	int N, M;
	List<Integer> A;
	boolean result = false;

	public static void main(String[] args) throws IOException {
		InputStreamReader reader = new InputStreamReader(System.in, StandardCharsets.UTF_8);
		BufferedReader in = new BufferedReader(reader);
		Main ins = new Main(in);
		ins.calc();
		ins.showResult();
	}

	Main(BufferedReader in) throws IOException {
		String[] tokens = in.readLine().split(" ");
		this.N = Integer.parseInt(tokens[0]);
		this.M = Integer.parseInt(tokens[1]);
		tokens = in.readLine().split(" ");
		this.A = new ArrayList<>(N);
		for (int i = 0; i < N; ++i) {
			this.A.add(Integer.parseInt(tokens[i]));
		}
		Collections.sort(this.A);
		Collections.reverse(this.A);
	}

	void calc() {
		int sum = 0;
		for (int i = 0; i < N; ++i) {
			sum += A.get(i);
		}
		double threshold = sum / (4.0 * (double) M);
		int count = 0;

		for (int i = 0; i < N; ++i) {
			if (A.get(i) < threshold) {
				break;
			}
			++count;
		}
		if (count >= M) {
			result = true;
		}
	}

	void showResult() {
		System.out.println(result ? "Yes" : "No");
	}

} Main int N N M; M List<Integer> A; A boolean result = false; result false public static void main(String[] args) throws IOException {
		InputStreamReader reader = new InputStreamReader(System.in, StandardCharsets.UTF_8);
		BufferedReader in = new BufferedReader(reader);
		Main ins = new Main(in);
		ins.calc();
		ins.showResult();
	} main {
		InputStreamReader reader = new InputStreamReader(System.in, StandardCharsets.UTF_8);
		BufferedReader in = new BufferedReader(reader);
		Main ins = new Main(in);
		ins.calc();
		ins.showResult();
	} InputStreamReader reader = new InputStreamReader(System.in, StandardCharsets.UTF_8); reader new InputStreamReader(System.in, StandardCharsets.UTF_8) BufferedReader in = new BufferedReader(reader); in new BufferedReader(reader) Main ins = new Main(in); ins new Main(in) ins.calc() ins.calc ins ins.showResult() ins.showResult ins String[] args args Main(BufferedReader in) throws IOException {
		String[] tokens = in.readLine().split(" ");
		this.N = Integer.parseInt(tokens[0]);
		this.M = Integer.parseInt(tokens[1]);
		tokens = in.readLine().split(" ");
		this.A = new ArrayList<>(N);
		for (int i = 0; i < N; ++i) {
			this.A.add(Integer.parseInt(tokens[i]));
		}
		Collections.sort(this.A);
		Collections.reverse(this.A);
	} Main {
		String[] tokens = in.readLine().split(" ");
		this.N = Integer.parseInt(tokens[0]);
		this.M = Integer.parseInt(tokens[1]);
		tokens = in.readLine().split(" ");
		this.A = new ArrayList<>(N);
		for (int i = 0; i < N; ++i) {
			this.A.add(Integer.parseInt(tokens[i]));
		}
		Collections.sort(this.A);
		Collections.reverse(this.A);
	} String[] tokens = in.readLine().split(" "); tokens in.readLine().split(" ") in.readLine().split in.readLine() in.readLine in " " this.N = Integer.parseInt(tokens[0]) this.N this this.N Integer.parseInt(tokens[0]) Integer.parseInt Integer tokens[0] tokens 0 this.M = Integer.parseInt(tokens[1]) this.M this this.M Integer.parseInt(tokens[1]) Integer.parseInt Integer tokens[1] tokens 1 tokens = in.readLine().split(" ") tokens in.readLine().split(" ") in.readLine().split in.readLine() in.readLine in " " this.A = new ArrayList<>(N) this.A this this.A new ArrayList<>(N) for (int i = 0; i < N; ++i) {
			this.A.add(Integer.parseInt(tokens[i]));
		} int i = 0; int i = 0; i 0 i < N i N ++i ++i i {
			this.A.add(Integer.parseInt(tokens[i]));
		} {
			this.A.add(Integer.parseInt(tokens[i]));
		} this.A.add(Integer.parseInt(tokens[i])) this.A.add this.A this this.A Integer.parseInt(tokens[i]) Integer.parseInt Integer tokens[i] tokens i Collections.sort(this.A) Collections.sort Collections this.A this this.A Collections.reverse(this.A) Collections.reverse Collections this.A this this.A BufferedReader in in void calc() {
		int sum = 0;
		for (int i = 0; i < N; ++i) {
			sum += A.get(i);
		}
		double threshold = sum / (4.0 * (double) M);
		int count = 0;

		for (int i = 0; i < N; ++i) {
			if (A.get(i) < threshold) {
				break;
			}
			++count;
		}
		if (count >= M) {
			result = true;
		}
	} calc {
		int sum = 0;
		for (int i = 0; i < N; ++i) {
			sum += A.get(i);
		}
		double threshold = sum / (4.0 * (double) M);
		int count = 0;

		for (int i = 0; i < N; ++i) {
			if (A.get(i) < threshold) {
				break;
			}
			++count;
		}
		if (count >= M) {
			result = true;
		}
	} int sum = 0; sum 0 for (int i = 0; i < N; ++i) {
			sum += A.get(i);
		} int i = 0; int i = 0; i 0 i < N i N ++i ++i i {
			sum += A.get(i);
		} {
			sum += A.get(i);
		} sum += A.get(i) sum A.get(i) A.get A i double threshold = sum / (4.0 * (double) M); threshold sum / (4.0 * (double) M) sum (4.0 * (double) M) 4.0 (double) M int count = 0; count 0 for (int i = 0; i < N; ++i) {
			if (A.get(i) < threshold) {
				break;
			}
			++count;
		} int i = 0; int i = 0; i 0 i < N i N ++i ++i i {
			if (A.get(i) < threshold) {
				break;
			}
			++count;
		} {
			if (A.get(i) < threshold) {
				break;
			}
			++count;
		} if (A.get(i) < threshold) {
				break;
			} A.get(i) < threshold A.get(i) A.get A i threshold {
				break;
			} break; ++count count if (count >= M) {
			result = true;
		} count >= M count M {
			result = true;
		} result = true result true void showResult() {
		System.out.println(result ? "Yes" : "No");
	} showResult {
		System.out.println(result ? "Yes" : "No");
	} System.out.println(result ? "Yes" : "No") System.out.println System.out System System.out result ? "Yes" : "No" result "Yes" "No" public class Main {
	int N, M;
	List<Integer> A;
	boolean result = false;

	public static void main(String[] args) throws IOException {
		InputStreamReader reader = new InputStreamReader(System.in, StandardCharsets.UTF_8);
		BufferedReader in = new BufferedReader(reader);
		Main ins = new Main(in);
		ins.calc();
		ins.showResult();
	}

	Main(BufferedReader in) throws IOException {
		String[] tokens = in.readLine().split(" ");
		this.N = Integer.parseInt(tokens[0]);
		this.M = Integer.parseInt(tokens[1]);
		tokens = in.readLine().split(" ");
		this.A = new ArrayList<>(N);
		for (int i = 0; i < N; ++i) {
			this.A.add(Integer.parseInt(tokens[i]));
		}
		Collections.sort(this.A);
		Collections.reverse(this.A);
	}

	void calc() {
		int sum = 0;
		for (int i = 0; i < N; ++i) {
			sum += A.get(i);
		}
		double threshold = sum / (4.0 * (double) M);
		int count = 0;

		for (int i = 0; i < N; ++i) {
			if (A.get(i) < threshold) {
				break;
			}
			++count;
		}
		if (count >= M) {
			result = true;
		}
	}

	void showResult() {
		System.out.println(result ? "Yes" : "No");
	}

} public class Main {
	int N, M;
	List<Integer> A;
	boolean result = false;

	public static void main(String[] args) throws IOException {
		InputStreamReader reader = new InputStreamReader(System.in, StandardCharsets.UTF_8);
		BufferedReader in = new BufferedReader(reader);
		Main ins = new Main(in);
		ins.calc();
		ins.showResult();
	}

	Main(BufferedReader in) throws IOException {
		String[] tokens = in.readLine().split(" ");
		this.N = Integer.parseInt(tokens[0]);
		this.M = Integer.parseInt(tokens[1]);
		tokens = in.readLine().split(" ");
		this.A = new ArrayList<>(N);
		for (int i = 0; i < N; ++i) {
			this.A.add(Integer.parseInt(tokens[i]));
		}
		Collections.sort(this.A);
		Collections.reverse(this.A);
	}

	void calc() {
		int sum = 0;
		for (int i = 0; i < N; ++i) {
			sum += A.get(i);
		}
		double threshold = sum / (4.0 * (double) M);
		int count = 0;

		for (int i = 0; i < N; ++i) {
			if (A.get(i) < threshold) {
				break;
			}
			++count;
		}
		if (count >= M) {
			result = true;
		}
	}

	void showResult() {
		System.out.println(result ? "Yes" : "No");
	}

} Main

import java.util.*;
import java.util.stream.Collectors;
import java.io.*;
import java.nio.charset.StandardCharsets;

public class Main {
	int N, M;
	List<Integer> A;
	boolean result = false;

	public static void main(String[] args) throws IOException {
		InputStreamReader reader = new InputStreamReader(System.in, StandardCharsets.UTF_8);
		BufferedReader in = new BufferedReader(reader);
		Main ins = new Main(in);
		ins.calc();
		ins.showResult();
	}

	Main(BufferedReader in) throws IOException {
		String[] tokens = in.readLine().split(" ");
		this.N = Integer.parseInt(tokens[0]);
		this.M = Integer.parseInt(tokens[1]);
		tokens = in.readLine().split(" ");
		this.A = new ArrayList<>(N);
		for (int i = 0; i < N; ++i) {
			this.A.add(Integer.parseInt(tokens[i]));
		}
		Collections.sort(this.A);
		Collections.reverse(this.A);
	}

	void calc() {
		int sum = 0;
		for (int i = 0; i < N; ++i) {
			sum += A.get(i);
		}
		double threshold = sum / (4.0 * (double) M);
		int count = 0;

		for (int i = 0; i < N; ++i) {
			if (A.get(i) < threshold) {
				break;
			}
			++count;
		}
		if (count >= M) {
			result = true;
		}
	}

	void showResult() {
		System.out.println(result ? "Yes" : "No");
	}

}
