Submission #63890980
Source Code Expand
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.NoSuchElementException;
public class Main {
static int N,L;
static int[] T;
static int div = 16;
static int[] two = new int[div];
static ArrayDeque<Integer>[] group;
static Pair[] pairs;
public static void main(String[] args) {
init();
setPairs();
setGroups();
setAB();
}
private static void init(){
FastScanner sc = new FastScanner();
N = sc.nextInt();
L = sc.nextInt();
T = new int[N];
for (int i = 0; i < N; i++) {
T[i] = sc.nextInt();
}
}
private static void setPairs(){
pairs = new Pair[N];
for (int i = 0; i < N; i++) {
pairs[i] = new Pair(T[i],i);
}
Arrays.sort(pairs);
// for (int i = 0; i < N; i++) {
// System.out.println(pairs[i].t);
// }
}
private static void setGroups(){
group = new ArrayDeque[div];
for (int i = 0; i < div; i++) {
group[i] = new ArrayDeque<>();
}
two[0] = 1;
for (int i = 1; i < div; i++) {
two[i] = two[i-1]*2;
}
group[0].add(0);
for (int i = 1; i < N; i++) {
for (int j = 1; j < div; j++) {
if (Math.abs(T[i] - two[j-1]) > Math.abs(T[i] - two[j]) && Math.abs(T[i] - two[j+1]) > Math.abs(T[i] - two[j])){
group[j].add(i);
break;
}
}
}
}
private static void setAB(){
int[] ret = new int[div];
Arrays.fill(ret,-1);
int[] ans = new int[N];
int index = 0;
// System.out.println("ret");
for (int i = 0; i < div; i++) {
if (group[i].isEmpty()) continue;
ret[i] = group[i].remove();
// System.out.println(ret[i]);
ans[index] = ret[i];
index++;
}
int[] a = new int[N];
int[] b = new int[N];
Arrays.fill(a,-1);
Arrays.fill(b,-1);
for (int i = div - 1; i >= 0; i--) {
while (!group[i].isEmpty()){
ans[index] = group[i].remove();
index++;
}
if (ret[i] != -1) {
a[index - 1] = i;
}
}
// System.out.println(ans[1]);
// for (int i = 0; i < N; i++) {
// System.out.println(ans[a[i]] + " " + ans[b[i]]);
// }
for (int i = 0; i < N-1; i++) {
if (a[i] == -1){
a[i] = i+1;
}
if (b[i] == -1){
b[i] = i+1;
}
}
a[N-1] = 0;
b[N-1] = 0;
// System.out.println("ans");
// for (int i = 0; i < N; i++) {
// System.out.println(ans[i]);
// }
//
// System.out.println("ab");
// for (int i = 0; i < N; i++) {
// System.out.println(a[i] + " " + b[i]);
// }
//
// System.out.println("out");
// for (int i = 0; i < N; i++) {
// System.out.println(ans[a[i]] + " " + ans[b[i]]);
// }
int[] A = new int[N];
int[] B = new int[N];
for (int i = 0; i < N; i++) {
A[ans[i]] = ans[a[i]];
B[ans[i]] = ans[b[i]];
}
// System.out.println("true");
System.out.println(ans[1] + " " + ans[1]);
for (int i = 1; i < N; i++) {
System.out.println(A[i] + " " + B[i]);
}
}
private static class Pair implements Comparable<Pair>{
int t, index;
public Pair(int A,int B){
t = A;
index = B;
}
@Override
public int compareTo(Pair o) {
return Integer.compare(t,o.t);
}
}
private 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();
}
return buflen > 0;
}
}
private int readByte() {
if (hasNextByte()) return buffer[ptr++];
else return -1;
}
private static boolean isPrintableChar(int c) {
return 33 <= c && c <= 126;
}
public boolean hasNext() {
while (hasNextByte() && !isPrintableChar(buffer[ptr])) ptr++;
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() {
long nl = nextLong();
if (nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE) throw new NumberFormatException();
return (int) nl;
}
public double nextDouble() {
return Double.parseDouble(next());
}
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | A - Cleaning Up |
| User | AAH_tomato |
| Language | Java (OpenJDK 17) |
| Score | 131129206 |
| Code Size | 6604 Byte |
| Status | AC |
| Exec Time | 69 ms |
| Memory | 37632 KiB |
Compile Error
Note: Main.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.
Judge Result
| Set Name | test_ALL | ||
|---|---|---|---|
| Score / Max Score | 131129206 / 150000000 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| test_ALL | test_0000.txt, test_0001.txt, test_0002.txt, test_0003.txt, test_0004.txt, test_0005.txt, test_0006.txt, test_0007.txt, test_0008.txt, test_0009.txt, test_0010.txt, test_0011.txt, test_0012.txt, test_0013.txt, test_0014.txt, test_0015.txt, test_0016.txt, test_0017.txt, test_0018.txt, test_0019.txt, test_0020.txt, test_0021.txt, test_0022.txt, test_0023.txt, test_0024.txt, test_0025.txt, test_0026.txt, test_0027.txt, test_0028.txt, test_0029.txt, test_0030.txt, test_0031.txt, test_0032.txt, test_0033.txt, test_0034.txt, test_0035.txt, test_0036.txt, test_0037.txt, test_0038.txt, test_0039.txt, test_0040.txt, test_0041.txt, test_0042.txt, test_0043.txt, test_0044.txt, test_0045.txt, test_0046.txt, test_0047.txt, test_0048.txt, test_0049.txt, test_0050.txt, test_0051.txt, test_0052.txt, test_0053.txt, test_0054.txt, test_0055.txt, test_0056.txt, test_0057.txt, test_0058.txt, test_0059.txt, test_0060.txt, test_0061.txt, test_0062.txt, test_0063.txt, test_0064.txt, test_0065.txt, test_0066.txt, test_0067.txt, test_0068.txt, test_0069.txt, test_0070.txt, test_0071.txt, test_0072.txt, test_0073.txt, test_0074.txt, test_0075.txt, test_0076.txt, test_0077.txt, test_0078.txt, test_0079.txt, test_0080.txt, test_0081.txt, test_0082.txt, test_0083.txt, test_0084.txt, test_0085.txt, test_0086.txt, test_0087.txt, test_0088.txt, test_0089.txt, test_0090.txt, test_0091.txt, test_0092.txt, test_0093.txt, test_0094.txt, test_0095.txt, test_0096.txt, test_0097.txt, test_0098.txt, test_0099.txt, test_0100.txt, test_0101.txt, test_0102.txt, test_0103.txt, test_0104.txt, test_0105.txt, test_0106.txt, test_0107.txt, test_0108.txt, test_0109.txt, test_0110.txt, test_0111.txt, test_0112.txt, test_0113.txt, test_0114.txt, test_0115.txt, test_0116.txt, test_0117.txt, test_0118.txt, test_0119.txt, test_0120.txt, test_0121.txt, test_0122.txt, test_0123.txt, test_0124.txt, test_0125.txt, test_0126.txt, test_0127.txt, test_0128.txt, test_0129.txt, test_0130.txt, test_0131.txt, test_0132.txt, test_0133.txt, test_0134.txt, test_0135.txt, test_0136.txt, test_0137.txt, test_0138.txt, test_0139.txt, test_0140.txt, test_0141.txt, test_0142.txt, test_0143.txt, test_0144.txt, test_0145.txt, test_0146.txt, test_0147.txt, test_0148.txt, test_0149.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| test_0000.txt | AC | 64 ms | 37456 KiB |
| test_0001.txt | AC | 65 ms | 37300 KiB |
| test_0002.txt | AC | 65 ms | 37460 KiB |
| test_0003.txt | AC | 65 ms | 37472 KiB |
| test_0004.txt | AC | 64 ms | 37188 KiB |
| test_0005.txt | AC | 64 ms | 37280 KiB |
| test_0006.txt | AC | 64 ms | 37264 KiB |
| test_0007.txt | AC | 65 ms | 37220 KiB |
| test_0008.txt | AC | 65 ms | 37292 KiB |
| test_0009.txt | AC | 64 ms | 37520 KiB |
| test_0010.txt | AC | 66 ms | 37532 KiB |
| test_0011.txt | AC | 65 ms | 37516 KiB |
| test_0012.txt | AC | 64 ms | 37256 KiB |
| test_0013.txt | AC | 66 ms | 37480 KiB |
| test_0014.txt | AC | 64 ms | 37112 KiB |
| test_0015.txt | AC | 63 ms | 37168 KiB |
| test_0016.txt | AC | 65 ms | 37440 KiB |
| test_0017.txt | AC | 65 ms | 37320 KiB |
| test_0018.txt | AC | 65 ms | 37212 KiB |
| test_0019.txt | AC | 65 ms | 37604 KiB |
| test_0020.txt | AC | 65 ms | 37276 KiB |
| test_0021.txt | AC | 66 ms | 37292 KiB |
| test_0022.txt | AC | 65 ms | 37604 KiB |
| test_0023.txt | AC | 64 ms | 37452 KiB |
| test_0024.txt | AC | 64 ms | 37456 KiB |
| test_0025.txt | AC | 66 ms | 37272 KiB |
| test_0026.txt | AC | 67 ms | 37240 KiB |
| test_0027.txt | AC | 65 ms | 37236 KiB |
| test_0028.txt | AC | 66 ms | 37472 KiB |
| test_0029.txt | AC | 66 ms | 37320 KiB |
| test_0030.txt | AC | 64 ms | 37456 KiB |
| test_0031.txt | AC | 66 ms | 37444 KiB |
| test_0032.txt | AC | 66 ms | 37172 KiB |
| test_0033.txt | AC | 64 ms | 37196 KiB |
| test_0034.txt | AC | 64 ms | 37456 KiB |
| test_0035.txt | AC | 65 ms | 37572 KiB |
| test_0036.txt | AC | 66 ms | 37464 KiB |
| test_0037.txt | AC | 64 ms | 37256 KiB |
| test_0038.txt | AC | 67 ms | 37280 KiB |
| test_0039.txt | AC | 65 ms | 37308 KiB |
| test_0040.txt | AC | 65 ms | 37472 KiB |
| test_0041.txt | AC | 66 ms | 37320 KiB |
| test_0042.txt | AC | 64 ms | 37296 KiB |
| test_0043.txt | AC | 63 ms | 37480 KiB |
| test_0044.txt | AC | 65 ms | 37532 KiB |
| test_0045.txt | AC | 65 ms | 37188 KiB |
| test_0046.txt | AC | 66 ms | 37532 KiB |
| test_0047.txt | AC | 66 ms | 37208 KiB |
| test_0048.txt | AC | 65 ms | 37304 KiB |
| test_0049.txt | AC | 63 ms | 37456 KiB |
| test_0050.txt | AC | 64 ms | 37220 KiB |
| test_0051.txt | AC | 65 ms | 37272 KiB |
| test_0052.txt | AC | 64 ms | 37284 KiB |
| test_0053.txt | AC | 64 ms | 37248 KiB |
| test_0054.txt | AC | 65 ms | 37284 KiB |
| test_0055.txt | AC | 65 ms | 37520 KiB |
| test_0056.txt | AC | 65 ms | 37616 KiB |
| test_0057.txt | AC | 66 ms | 37476 KiB |
| test_0058.txt | AC | 65 ms | 37304 KiB |
| test_0059.txt | AC | 65 ms | 37484 KiB |
| test_0060.txt | AC | 63 ms | 37256 KiB |
| test_0061.txt | AC | 64 ms | 37460 KiB |
| test_0062.txt | AC | 65 ms | 37616 KiB |
| test_0063.txt | AC | 66 ms | 37212 KiB |
| test_0064.txt | AC | 66 ms | 37520 KiB |
| test_0065.txt | AC | 63 ms | 37248 KiB |
| test_0066.txt | AC | 66 ms | 37220 KiB |
| test_0067.txt | AC | 66 ms | 37404 KiB |
| test_0068.txt | AC | 66 ms | 37620 KiB |
| test_0069.txt | AC | 69 ms | 37632 KiB |
| test_0070.txt | AC | 66 ms | 37596 KiB |
| test_0071.txt | AC | 68 ms | 37356 KiB |
| test_0072.txt | AC | 67 ms | 37256 KiB |
| test_0073.txt | AC | 67 ms | 37608 KiB |
| test_0074.txt | AC | 68 ms | 37128 KiB |
| test_0075.txt | AC | 66 ms | 37172 KiB |
| test_0076.txt | AC | 66 ms | 37424 KiB |
| test_0077.txt | AC | 67 ms | 37300 KiB |
| test_0078.txt | AC | 65 ms | 37192 KiB |
| test_0079.txt | AC | 66 ms | 37208 KiB |
| test_0080.txt | AC | 66 ms | 37192 KiB |
| test_0081.txt | AC | 65 ms | 37292 KiB |
| test_0082.txt | AC | 65 ms | 37264 KiB |
| test_0083.txt | AC | 66 ms | 37284 KiB |
| test_0084.txt | AC | 65 ms | 37612 KiB |
| test_0085.txt | AC | 64 ms | 37484 KiB |
| test_0086.txt | AC | 65 ms | 37240 KiB |
| test_0087.txt | AC | 64 ms | 37260 KiB |
| test_0088.txt | AC | 65 ms | 37620 KiB |
| test_0089.txt | AC | 65 ms | 37472 KiB |
| test_0090.txt | AC | 65 ms | 37632 KiB |
| test_0091.txt | AC | 66 ms | 37152 KiB |
| test_0092.txt | AC | 65 ms | 37280 KiB |
| test_0093.txt | AC | 65 ms | 37272 KiB |
| test_0094.txt | AC | 66 ms | 37304 KiB |
| test_0095.txt | AC | 67 ms | 37484 KiB |
| test_0096.txt | AC | 67 ms | 37612 KiB |
| test_0097.txt | AC | 64 ms | 37264 KiB |
| test_0098.txt | AC | 63 ms | 37432 KiB |
| test_0099.txt | AC | 65 ms | 37400 KiB |
| test_0100.txt | AC | 65 ms | 37348 KiB |
| test_0101.txt | AC | 64 ms | 37440 KiB |
| test_0102.txt | AC | 64 ms | 37188 KiB |
| test_0103.txt | AC | 65 ms | 37324 KiB |
| test_0104.txt | AC | 64 ms | 37252 KiB |
| test_0105.txt | AC | 65 ms | 37400 KiB |
| test_0106.txt | AC | 64 ms | 37176 KiB |
| test_0107.txt | AC | 66 ms | 37480 KiB |
| test_0108.txt | AC | 65 ms | 37260 KiB |
| test_0109.txt | AC | 65 ms | 37312 KiB |
| test_0110.txt | AC | 63 ms | 37256 KiB |
| test_0111.txt | AC | 63 ms | 37260 KiB |
| test_0112.txt | AC | 63 ms | 37232 KiB |
| test_0113.txt | AC | 66 ms | 37316 KiB |
| test_0114.txt | AC | 65 ms | 37500 KiB |
| test_0115.txt | AC | 65 ms | 37524 KiB |
| test_0116.txt | AC | 64 ms | 37244 KiB |
| test_0117.txt | AC | 65 ms | 37284 KiB |
| test_0118.txt | AC | 64 ms | 37276 KiB |
| test_0119.txt | AC | 64 ms | 37592 KiB |
| test_0120.txt | AC | 65 ms | 37588 KiB |
| test_0121.txt | AC | 65 ms | 37144 KiB |
| test_0122.txt | AC | 63 ms | 37244 KiB |
| test_0123.txt | AC | 65 ms | 37208 KiB |
| test_0124.txt | AC | 64 ms | 37608 KiB |
| test_0125.txt | AC | 63 ms | 37596 KiB |
| test_0126.txt | AC | 64 ms | 37420 KiB |
| test_0127.txt | AC | 65 ms | 37364 KiB |
| test_0128.txt | AC | 64 ms | 37224 KiB |
| test_0129.txt | AC | 64 ms | 37176 KiB |
| test_0130.txt | AC | 65 ms | 37156 KiB |
| test_0131.txt | AC | 64 ms | 37404 KiB |
| test_0132.txt | AC | 64 ms | 37476 KiB |
| test_0133.txt | AC | 68 ms | 37468 KiB |
| test_0134.txt | AC | 65 ms | 37524 KiB |
| test_0135.txt | AC | 64 ms | 37260 KiB |
| test_0136.txt | AC | 65 ms | 37296 KiB |
| test_0137.txt | AC | 64 ms | 37232 KiB |
| test_0138.txt | AC | 66 ms | 37284 KiB |
| test_0139.txt | AC | 64 ms | 37300 KiB |
| test_0140.txt | AC | 66 ms | 37432 KiB |
| test_0141.txt | AC | 63 ms | 37180 KiB |
| test_0142.txt | AC | 63 ms | 37172 KiB |
| test_0143.txt | AC | 63 ms | 37580 KiB |
| test_0144.txt | AC | 63 ms | 37460 KiB |
| test_0145.txt | AC | 65 ms | 37460 KiB |
| test_0146.txt | AC | 65 ms | 37472 KiB |
| test_0147.txt | AC | 63 ms | 37124 KiB |
| test_0148.txt | AC | 64 ms | 37452 KiB |
| test_0149.txt | AC | 65 ms | 37304 KiB |