結果
| 問題 |
No.202 1円玉投げ
|
| コンテスト | |
| ユーザー |
158b
|
| 提出日時 | 2015-05-04 02:39:29 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,386 bytes |
| コンパイル時間 | 412 ms |
| コンパイル使用メモリ | 60,140 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-12-22 08:12:04 |
| 合計ジャッジ時間 | 2,448 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 2 |
| other | AC * 15 WA * 23 |
ソースコード
#include<iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
using namespace std;
//重なったら1 そうでなければ0
int check(int loc1x, int loc1y, int loc2x, int loc2y){
int kyori = abs(pow(loc2x - loc1x, 2) + pow(loc2y - loc1y, 2) );
//cout << "距離測定:" << loc1[0] << "," << loc1[0] << "と" << loc2[0] << "," << loc2[1] << ":" << kyori << endl;
if(kyori < 400){
return 1;
}
return 0;
}
int main(){
int max;
int count = 0;
int loc[100000][2];
int in1;
int in2;
int s1;
int start;
int end;
int s2;
cin >> max;
for(int i=0; i<max; i++){
//データ入力部分
cin >> in1;
cin >> in2;
//挿入ソート(昇順)
s1 = 0;
while(in1 < loc[s1][0] && s1 < count){
s1 ++;
}
//s1が挿入先
for(s2=count; s2>=s1; s2--){
loc[s2 + 1][0] = loc[s2][0];
loc[s2 + 1][1] = loc[s2][1];
}
//データ挿入
loc[s2][0] = in1;
loc[s2][1] = in2;
//カウント部分
start = s2 - 100;
if(start < 0){
start = 0;
}
end = s2 + 100;
if(end > count){
end = count;
}
for(int i2=start; i2<end; i2++){
if(check(in1, in2 ,loc[i2][0], loc[i2][1]) == 1){
break;
}
}
if(loc[s2][0] != -1){
count ++;
}
}
//中身確認
/*
for(int i=0; i<max; i++){
cout << loc[i][0] << "," << loc[i][1] << endl;
}
*/
cout << count << endl;
}
158b