結果

問題 No.202 1円玉投げ
ユーザー 158b
提出日時 2015-05-04 02:38:27
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
WA  
実行時間 -
コード長 1,405 bytes
コンパイル時間 578 ms
コンパイル使用メモリ 58,700 KB
実行使用メモリ 6,824 KB
最終ジャッジ日時 2024-12-22 08:12:00
合計ジャッジ時間 2,672 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1 WA * 2
other AC * 15 WA * 23
権限があれば一括ダウンロードができます

ソースコード

diff #

//xでソート。

#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;
	
}

0