Submission #1147683

#TimeUsernameProblemLanguageResultExecution timeMemory
1147683mendoza_gabrielCoin Collecting (JOI19_ho_t4)Java
0 / 100
59 ms10596 KiB
import java.io.*; public class joi2019_ho_t4 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = parseInt(br.readLine().trim()); int total = 2 * N; int[] X = new int[total]; int[] Y = new int[total]; for (int i = 0; i < total; i++) { String[] parts = mySplit(br.readLine()); X[i] = parseInt(parts[0]); Y[i] = parseInt(parts[1]); } mergeSort(X, 0, total - 1); mergeSort(Y, 0, total - 1); int[] targetX = new int[total]; int[] targetY = new int[total]; for (int i = 0; i < total; i++) { targetX[i] = (i / 2) + 1; } for (int i = 0; i < total; i++) { targetY[i] = (i < N) ? 1 : 2; } long sum = 0; for (int i = 0; i < total; i++) { sum += abs(X[i] - targetX[i]); sum += abs(Y[i] - targetY[i]); } PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out))); out.println(sum); out.flush(); } static void mergeSort(int[] a, int l, int r) { if(l >= r) return; int m = (l + r) / 2; mergeSort(a, l, m); mergeSort(a, m+1, r); int[] temp = new int[r - l + 1]; int i = l, j = m+1, k = 0; while(i <= m && j <= r) { if(a[i] <= a[j]) { temp[k++] = a[i++]; } else { temp[k++] = a[j++]; } } while(i <= m) { temp[k++] = a[i++]; } while(j <= r) { temp[k++] = a[j++]; } for(i = l, k = 0; i <= r; i++, k++) { a[i] = temp[k]; } } static int abs(int a) { return a < 0 ? -a : a; } static String[] mySplit(String s) { int len = s.length(), cnt = 0; boolean inToken = false; for (int i = 0; i < len; i++) { if (!isSpace(s.charAt(i))) { if (!inToken) { cnt++; inToken = true; } } else { inToken = false; } } String[] tokens = new String[cnt]; int idx = 0; StringBuilder sb = new StringBuilder(); inToken = false; for (int i = 0; i < len; i++) { char c = s.charAt(i); if (!isSpace(c)) { sb.append(c); inToken = true; } else { if(inToken) { tokens[idx++] = sb.toString(); sb.setLength(0); inToken = false; } } } if(inToken) { tokens[idx++] = sb.toString(); } return tokens; } static boolean isSpace(char c) { return c==' ' || c=='\t' || c=='\n' || c=='\r'; } static int parseInt(String s) { int i = 0, n = s.length(), num = 0, sign = 1; if(n==0)return 0; char c = s.charAt(0); if(c=='-') { sign=-1; i++; } else if(c=='+') { i++; } for(; i<n; i++){ num = num*10 + (s.charAt(i)-'0'); } return sign * num; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...