AtCoder Beginner Contest 115
最近、競プロ(Atcoder)を始めた。 まだまだ初心者だけど、考察とかを書いて行こうと思う。 ABCは2回目。
今日のABC。 開始が10分ほど延期になった。その間にトイレ行ってた。
A問題
if文書いて終わり。それでも2分くらい。
B問題
ソートして一番金額が高いものを半額にすればできた。 始まってから10分くらい。遅い。
C問題
前回はC問題解けなかったから気合いを入れる。 なんかできそう、と考えていると、ソートしてK個分みてMAXとMINの差分が小さくなるものを選べばできることを思いつく。 書いてみるとできた。 (だけどミスってWAを出してしまった。K個分みることを忘れていた。。)
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int K = sc.nextInt(); ArrayList<Long> list = new ArrayList<>(); for (int i = 0; i < N; i++) { list.add(sc.nextLong()); } Collections.sort(list); long[] dif = new long[N-K+1]; for (int i = 0; i < N-K+1; i++) { long min = list.get(i); long max = list.get(i+K-1); dif[i] = max - min; } Arrays.sort(dif); System.out.println(dif[0]); } }
D問題
解けなかった。ペンだけ動かして漸化式書いてた・・ もっと勉強が必要ですね。