[伯俊]BOJ 2470両溶液JAVA
10398 ワード
BOJ 2470両溶液
KOI建設科学研究所は多様な酸性溶液とアルカリ性溶液を持っている.各溶液には整数があり、その溶液の特性を表す.酸性溶液の特性値は、1〜10000000の正の整数で表され、塩基性溶液の特性値は−1〜10000000の負の整数で表される.
2つの溶液を等量混合した溶液の特性値は、混合に用いられる各溶液の特性値の和として定義される.この研究所は等量の2種類の溶液を混合し,特性値が最もゼロに近い溶液を作製しようとしている.
例えば、与えられた溶液の特性値が[2,4,−99,−1,98]であり、特性値が−99の溶液と特性値が98の溶液とを混合すると、特性値が−1の溶液が得られ、この溶液は特性値が最も0に近い溶液である.ちなみに、特性値が0に近い混合溶液を2種類のアルカリ溶液または2種類の酸性溶液のみで製造する場合もある.
酸性溶液とアルカリ性溶液の特性値が与えられている場合は、2つの異なる溶液を混合し、特性値が0に近い2つの溶液を見つけるプログラムを作成します.
1行目は、溶液全体の数Nを入力する.Nは2以上100000以下である.2行目には、溶液特性値を表すN個の整数が与えられ、その間にスペースが隔てられている.これらの数字はいずれも-10000000以上10000000以下です.N個の溶液の特性値が異なり、酸性溶液またはアルカリ性溶液のみが入力される場合もある.
1行目の出力特性値は0に近い2つの溶液の特性値である.出力が必要な2種類の溶液は特性値の昇順に出力される.プロパティ値が0の場合、2つ以上の場合、いずれかを出力します.
の負数と正数を計算し、0に近い場合は倹約値を使用すればよい. ただし、を使用するとタイムアウトが発生します. が望ましい
質問する
KOI建設科学研究所は多様な酸性溶液とアルカリ性溶液を持っている.各溶液には整数があり、その溶液の特性を表す.酸性溶液の特性値は、1〜10000000の正の整数で表され、塩基性溶液の特性値は−1〜10000000の負の整数で表される.
2つの溶液を等量混合した溶液の特性値は、混合に用いられる各溶液の特性値の和として定義される.この研究所は等量の2種類の溶液を混合し,特性値が最もゼロに近い溶液を作製しようとしている.
例えば、与えられた溶液の特性値が[2,4,−99,−1,98]であり、特性値が−99の溶液と特性値が98の溶液とを混合すると、特性値が−1の溶液が得られ、この溶液は特性値が最も0に近い溶液である.ちなみに、特性値が0に近い混合溶液を2種類のアルカリ溶液または2種類の酸性溶液のみで製造する場合もある.
酸性溶液とアルカリ性溶液の特性値が与えられている場合は、2つの異なる溶液を混合し、特性値が0に近い2つの溶液を見つけるプログラムを作成します.
入力
1行目は、溶液全体の数Nを入力する.Nは2以上100000以下である.2行目には、溶液特性値を表すN個の整数が与えられ、その間にスペースが隔てられている.これらの数字はいずれも-10000000以上10000000以下です.N個の溶液の特性値が異なり、酸性溶液またはアルカリ性溶液のみが入力される場合もある.
しゅつりょく
1行目の出力特性値は0に近い2つの溶液の特性値である.出力が必要な2種類の溶液は特性値の昇順に出力される.プロパティ値が0の場合、2つ以上の場合、いずれかを出力します.
サンプルI/O
ソースコード
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
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());
int[] arr = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
int start = 0;
int end = n - 1;
int max = Integer.MAX_VALUE;
int ans1 = 0, ans2 = 0;
while (start < end) {
int sum = arr[start] + arr[end];
if (max > Math.abs(sum)) {
max = Math.abs(sum);
ans1 = arr[start];
ans2 = arr[end];
}
if (sum > 0) {
end--;
} else {
start++;
}
}
System.out.println(ans1 + " " + ans2);
}
}
Comment
Scanner()
Reference
この問題について([伯俊]BOJ 2470両溶液JAVA), 我々は、より多くの情報をここで見つけました https://velog.io/@jinmin2216/백준-BOJ2470-두-용액-JAVAテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol