Submission #6517416


Source Code Expand

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.NoSuchElementException;
import java.util.TreeMap;

public class Main {
	static FastScanner sc = new FastScanner();
	static PrintWriter out = new PrintWriter(System.out);
	
	public static void main(String[] args) {
		int N = sc.nextInt();
		int K = sc.nextInt();
		
		TreeMap <Integer, Integer> map = new TreeMap <Integer, Integer>();
	
		for (int i=0; i<N; i++) {
			int ai = sc.nextInt();
			
			if (map.containsKey(ai)) {
				int temp = map.get(ai);
				map.put(ai, temp+1);
			}
			else
				map.put(ai, 1);
		}
		int size = map.size();
		if (size<=K)
			out.println(0);
		
		else {
			int freq [] = new int [size];
			for (int i=0; i<size; i++){
				freq[i] = map.get(map.firstKey());
				map.pollFirstEntry();
			}
			Arrays.sort (freq);
			
			int cnt = 0;
			int size_final = size;
			for (int i=0; i<size_final; i++){
				int temp = freq[i];
				if (size-1<=K) {
					cnt+=temp;
					break;
				}
				else {
					cnt+=temp;
					size-=1;
				}
			}
			out.println(cnt);
			
		}
		
		out.flush();
		
	}
	
		static class FastScanner {
		    private final InputStream in = System.in;
		    private final byte[] buffer = new byte[1024];
		    private int ptr = 0;
		    private int buflen = 0;

		    private boolean hasNextByte() {
		      if (ptr < buflen) {
		        return true;
		      } else {
		        ptr = 0;
		        try {
		          buflen = in.read(buffer);
		        } catch (IOException e) {
		          e.printStackTrace();
		        }
		        if (buflen <= 0) {
		          return false;
		        }
		      }
		      return true;
		    }

		    private int readByte() {
		      if (hasNextByte()) return buffer[ptr++];
		      else return -1;
		    }

		    private static boolean isPrintableChar(int c) {
		      return 33 <= c && c <= 126;
		    }

		    private void skipUnprintable() {
		      while (hasNextByte() && !isPrintableChar(buffer[ptr])) ptr++;
		    }

		    public boolean hasNext() {
		      skipUnprintable();
		      return hasNextByte();
		    }

		    public String next() {
		      if (!hasNext()) throw new NoSuchElementException();
		      StringBuilder sb = new StringBuilder();
		      int b = readByte();
		      while (isPrintableChar(b)) {
		        sb.appendCodePoint(b);
		        b = readByte();
		      }
		      return sb.toString();
		    }

		    public long nextLong() {
		      if (!hasNext()) throw new NoSuchElementException();
		      long n = 0;
		      boolean minus = false;
		      int b = readByte();
		      if (b == '-') {
		        minus = true;
		        b = readByte();
		      }
		      if (b < '0' || '9' < b) {
		        throw new NumberFormatException();
		      }
		      while (true) {
		        if ('0' <= b && b <= '9') {
		          n *= 10;
		          n += b - '0';
		        } else if (b == -1 || !isPrintableChar(b)) {
		          return minus ? -n : n;
		        } else {
		          throw new NumberFormatException();
		        }
		        b = readByte();
		      }
		    }

		    public int nextInt() {
		      return (int) nextLong();
		    }

		    public int[] nextIntArray(int N, boolean oneBased) {
		      if (oneBased) {
		        int[] array = new int[N + 1];
		        for (int i = 1; i <= N; i++) {
		          array[i] = sc.nextInt();
		        }
		        return array;
		      } else {
		        int[] array = new int[N];
		        for (int i = 0; i < N; i++) {
		          array[i] = sc.nextInt();
		        }
		        return array;
		      }
		    }

		    public long[] nextLongArray(int N, boolean oneBased) {
		      if (oneBased) {
		        long[] array = new long[N + 1];
		        for (int i = 1; i <= N; i++) {
		          array[i] = sc.nextLong();
		        }
		        return array;
		      } else {
		        long[] array = new long[N];
		        for (int i = 0; i < N; i++) {
		          array[i] = sc.nextLong();
		        }
		        return array;
		      }
		    }
		  }

		}	 



Submission Info

Submission Time
Task C - Not so Diverse
User nh11092
Language Java8 (OpenJDK 1.8.0)
Score 300
Code Size 4210 Byte
Status AC
Exec Time 346 ms
Memory 49364 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 3
AC × 19
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All sample1.txt, sample2.txt, sample3.txt, 1.txt, 10.txt, 11.txt, 12.txt, 13.txt, 2.txt, 3.txt, 4.txt, 5.txt, 6.txt, 7.txt, 8.txt, 9.txt, sample1.txt, sample2.txt, sample3.txt
Case Name Status Exec Time Memory
1.txt AC 76 ms 18260 KB
10.txt AC 167 ms 32800 KB
11.txt AC 194 ms 37260 KB
12.txt AC 346 ms 49364 KB
13.txt AC 196 ms 29432 KB
2.txt AC 71 ms 21332 KB
3.txt AC 168 ms 32788 KB
4.txt AC 204 ms 33184 KB
5.txt AC 214 ms 32204 KB
6.txt AC 192 ms 30216 KB
7.txt AC 148 ms 35748 KB
8.txt AC 148 ms 34044 KB
9.txt AC 234 ms 33624 KB
sample1.txt AC 70 ms 21076 KB
sample2.txt AC 68 ms 18388 KB
sample3.txt AC 69 ms 18260 KB