結果
| 問題 |
No.208 王将
|
| コンテスト | |
| ユーザー |
tsukimizake774
|
| 提出日時 | 2015-06-09 21:20:26 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,641 bytes |
| コンパイル時間 | 638 ms |
| コンパイル使用メモリ | 71,168 KB |
| 実行使用メモリ | 13,884 KB |
| 最終ジャッジ日時 | 2024-07-06 15:14:02 |
| 合計ジャッジ時間 | 3,348 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 7 WA * 2 TLE * 1 -- * 13 |
ソースコード
#include <iostream>
#include <utility>
#include <memory>
#include <cmath>
using coord = std::pair<int, int>;
#ifndef BOOST_TEST_MAIN
int main(int const argc, char const** argv){
int x, y, x2, y2;
std::cin >> x >> y;
std::cin >> x2 >> y2;
coord dest = {x, y};
coord king = {0, 0};
auto p = std::make_shared<int>(king.first);
auto q = std::make_shared<int>(king.second);
double kdtilt = (double)y / (double)x;
double kotilt = (double)y2 / (double)x2;
double kdlen = y * y + x * x;
double kolen = y2 * y2 + x2 * x2;
// std::cout << " kdtilt:" << kdtilt << " kdlen:" << kdlen << "\n";
// std::cout << " kotilt:" << kotilt << " kolen:" << kolen << "\n";
auto count = 0;
// ナナメ一直線のときは1回ロス
auto tiltcond = (kdtilt == kotilt == 1.0) || (kdtilt == kotilt == -1.0);
if(tiltcond && kdlen > kolen){
++count;
}
for(; king != dest; ++count){
// std::cout << * p << " " << * q << "\n";
bool xisbigger = *p > dest.first;
bool yisbigger = *q > dest.second;
bool xissmaller = *p < dest.first;
bool yissmaller = *q < dest.second;
bool xeq = *p == dest.first;
bool yeq = *q == dest.second;
if(xeq && yeq){
break;
}
if(xisbigger){
-- *p;
if(yisbigger){
-- *q;
}else if (yissmaller){
++ *q;
}
continue;
}
if(xissmaller){
++ *p;
if(yisbigger){
-- *q;
}else if (yissmaller){
++ *q;
}
continue;
}
if(xeq){
if(yisbigger){
-- *q;
}else if (yissmaller){
++ *q;
}
continue;
}
}
std::cout << count;
}
#endif
tsukimizake774