This commit is contained in:
2026-04-27 20:53:53 +03:00
parent c71becc3d6
commit 9d84c20591
30 changed files with 384 additions and 0 deletions

54
1/C/Main.java Normal file
View File

@@ -0,0 +1,54 @@
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine().trim());
long[][] pts = new long[n][2];
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
pts[i][0] = Math.abs(Long.parseLong(st.nextToken()));
pts[i][1] = Math.abs(Long.parseLong(st.nextToken()));
}
Arrays.sort(pts, (p, q) -> p[0] != q[0] ? Long.compare(q[0], p[0]) : Long.compare(q[1], p[1]));
List<long[]> front = new ArrayList<>();
long maxY = 0;
int i = 0;
while (i < n) {
int j = i;
long curX = pts[i][0];
long curMaxY = 0;
while (j < n && pts[j][0] == curX) {
curMaxY = Math.max(curMaxY, pts[j][1]);
j++;
}
if (curMaxY > maxY) {
front.add(new long[] { curX, curMaxY });
maxY = curMaxY;
}
i = j;
}
int m = front.size();
long[] dp = new long[m + 1];
dp[m] = 0;
for (int ii = m - 1; ii >= 0; ii--) {
long a = front.get(ii)[0];
long b = 0;
dp[ii] = Long.MAX_VALUE;
for (int jj = ii; jj < m; jj++) {
b = Math.max(b, front.get(jj)[1]);
long area = 4L * a * b;
long total = area + dp[jj + 1];
dp[ii] = Math.min(dp[ii], total);
}
}
System.out.println(dp[0]);
}
}