結果

問題 No.691 E869120 and Constructing Array 5
ユーザー tailstails
提出日時 2018-05-21 11:56:49
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 227 ms / 1,000 ms
コード長 906 bytes
コンパイル時間 827 ms
コンパイル使用メモリ 69,632 KB
実行使用メモリ 19,200 KB
最終ジャッジ日時 2024-06-28 14:55:29
合計ジャッジ時間 8,160 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 195 ms
19,200 KB
testcase_01 AC 207 ms
19,200 KB
testcase_02 AC 216 ms
19,072 KB
testcase_03 AC 212 ms
19,072 KB
testcase_04 AC 218 ms
19,200 KB
testcase_05 AC 216 ms
19,200 KB
testcase_06 AC 215 ms
19,200 KB
testcase_07 AC 216 ms
19,200 KB
testcase_08 AC 213 ms
19,032 KB
testcase_09 AC 215 ms
19,072 KB
testcase_10 AC 216 ms
19,072 KB
testcase_11 AC 220 ms
19,072 KB
testcase_12 AC 217 ms
19,200 KB
testcase_13 AC 216 ms
19,072 KB
testcase_14 AC 222 ms
19,200 KB
testcase_15 AC 212 ms
19,188 KB
testcase_16 AC 219 ms
19,072 KB
testcase_17 AC 212 ms
19,200 KB
testcase_18 AC 224 ms
19,200 KB
testcase_19 AC 211 ms
19,184 KB
testcase_20 AC 227 ms
19,200 KB
testcase_21 AC 208 ms
19,176 KB
testcase_22 AC 217 ms
19,176 KB
testcase_23 AC 209 ms
19,180 KB
testcase_24 AC 218 ms
19,200 KB
testcase_25 AC 212 ms
19,072 KB
testcase_26 AC 222 ms
19,200 KB
testcase_27 AC 110 ms
19,072 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;

struct S{
	int e1,e2;
	double d;
};
S s[1000000];

bool f(double p,double d,int i,int j){
	while(i<j){
		double e=d-(s[i].d+s[j].d);
		if(fabs(e)<9e-11){
			double y=p-(sqrt(s[i].e1)+sqrt(s[i].e2)+sqrt(s[j].e1)+sqrt(s[j].e2));
			cout << "5 "
			     << s[i].e1 << " "
			     << s[i].e2 << " "
			     << s[j].e1 << " "
			     << s[j].e2 << " "
			     << int(y*y+0.5)
			     << endl;
			return true;
		}
		e<0?--j:++i;
	}
	return false;
}

void g(){
	double p,d,x;
	cin>>p;
	d=modf(p,&x);
	f(p,d,0,999999*d)||f(p,d+1,999999*d,999999);
}

int main(){
	int i=0;
	for(int a=1000;a<2000;++a){
		for(int b=0;b<1000;++b){
			double x=sqrt(a)+sqrt(b);
			double d=modf(x,&x);
			s[i].e1=a;
			s[i].e2=b;
			s[i].d=d;
			++i;
		}
	}
	sort(s,s+i,[](S const&a,S const&b){return a.d<b.d;});
	int q;
	cin>>q;
	for(;q--;){
		g();
	}
}
0