結果
| 問題 | No.1265 Balloon Survival |
| コンテスト | |
| ユーザー |
shojin_pro
|
| 提出日時 | 2020-10-23 22:50:14 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 619 ms / 2,000 ms |
| コード長 | 4,076 bytes |
| コンパイル時間 | 3,934 ms |
| コンパイル使用メモリ | 91,192 KB |
| 実行使用メモリ | 80,992 KB |
| 最終ジャッジ日時 | 2024-07-21 11:56:05 |
| 合計ジャッジ時間 | 13,511 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 32 |
ソースコード
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
FastScanner sc = new FastScanner(System.in);
PrintWriter pw = new PrintWriter(System.out);
StringBuilder sb = new StringBuilder();
int n = sc.nextInt();
boolean[] bomb = new boolean[n];
Balloon[] bl = new Balloon[n];
for(int i = 0; i < n; i++){
int x = sc.nextInt();
int y = sc.nextInt();
bl[i] = new Balloon(x,y);
}
ArrayList<Dist> dl = new ArrayList<>();
for(int i = 0; i < n; i++){
for(int j = i+1; j < n; j++){
dl.add(new Dist(i,j,(long)(bl[i].x-bl[j].x)*(bl[i].x-bl[j].x) + (long)(bl[i].y-bl[j].y)*(bl[i].y-bl[j].y)));
}
}
Collections.sort(dl);
int ans = 0;
for(Dist d : dl){
//pw.println(d.i + " " + d.j + " " + d.dist);
if(d.i != 0 && d.j != 0){
if(!bomb[d.i] && !bomb[d.j]){
bomb[d.i] = true;
bomb[d.j] = true;
}
}else if(d.i == 0){
if(!bomb[d.j]) ans++;
bomb[d.j] = true;
}else{
if(!bomb[d.i]) ans++;
bomb[d.i] = true;
}
}
pw.println(ans);
pw.flush();
}
static class GeekInteger {
public static void save_sort(int[] array) {
shuffle(array);
Arrays.sort(array);
}
public static int[] shuffle(int[] array) {
int n = array.length;
Random random = new Random();
for (int i = 0, j; i < n; i++) {
j = i + random.nextInt(n - i);
int randomElement = array[j];
array[j] = array[i];
array[i] = randomElement;
}
return array;
}
}
}
class Balloon{
int x,y;
public Balloon(int x, int y){
this.x = x;
this.y = y;
}
}
class Dist implements Comparable<Dist>{
int i,j;
long dist;
public Dist(int i, int j, long dist){
this.i = i;
this.j = j;
this.dist = dist;
}
public int compareTo(Dist d){
if(this.dist < d.dist){
return -1;
}else if(this.dist > d.dist){
return 1;
}else{
return 0;
}
}
}
class FastScanner {
private BufferedReader reader = null;
private StringTokenizer tokenizer = null;
public FastScanner(InputStream in) {
reader = new BufferedReader(new InputStreamReader(in));
tokenizer = null;
}
public String next() {
if (tokenizer == null || !tokenizer.hasMoreTokens()) {
try {
tokenizer = new StringTokenizer(reader.readLine());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return tokenizer.nextToken();
}
public String nextLine() {
if (tokenizer == null || !tokenizer.hasMoreTokens()) {
try {
return reader.readLine();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return tokenizer.nextToken("\n");
}
public long nextLong() {
return Long.parseLong(next());
}
public int nextInt() {
return Integer.parseInt(next());
}
public double nextDouble() {
return Double.parseDouble(next());
}
public String[] nextArray(int n) {
String[] a = new String[n];
for (int i = 0; i < n; i++)
a[i] = next();
return a;
}
public int[] nextIntArray(int n) {
int[] a = new int[n];
for (int i = 0; i < n; i++)
a[i] = nextInt();
return a;
}
public long[] nextLongArray(int n) {
long[] a = new long[n];
for (int i = 0; i < n; i++)
a[i] = nextLong();
return a;
}
}
shojin_pro