結果
| 問題 |
No.112 ややこしい鶴亀算
|
| コンテスト | |
| ユーザー |
dgd1724
|
| 提出日時 | 2016-09-21 19:03:46 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 1,724 bytes |
| コンパイル時間 | 910 ms |
| コンパイル使用メモリ | 98,252 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-11-17 10:31:34 |
| 合計ジャッジ時間 | 1,886 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 23 |
ソースコード
#define _USE_MATH_DEFINES //M_PI
#include <iostream> //std::cout, std::cin
#include <string> //std::string
#include <vector> //std::vector
#include <valarray> //std::valarray 数値のみの一次配列
#include <algorithm> //std::sort
#include <time.h> //localtime_s
#include <cstdlib> //abs
#include <cmath> //abs, std::pow, sqrt, sin, cos,
#include <fstream> //std::ifstream
#include <iomanip> //std::setprecision
#include <random> //std::random(C++11)
#include <numeric> //std::accumulate
int main(void) {
//test用
//std::ifstream in("test.txt");
//std::cin.rdbuf(in.rdbuf());
int N;
std::cin >> N;
std::vector<int> total(N);
for (int i = 0; i < N; i++) {
std::cin >> total[i];
}
int crane = 0, turtle = 0;
bool flg = true;
//1匹目を鶴と仮定
turtle = ((total[0] + 2) - 2 * N) / 2;
crane = N - turtle;
int temp = turtle * 4 + crane * 2;
//仮定の検証
if (crane == 0) {
for (int i = 0; i < N; i++) {
if (4 * N - 4 != total[i]) {
flg = false;
break;
}
}
}
if(flg && turtle == 0) {
for (int i = 0; i < N; i++) {
if (2 * N - 2 != total[i]) {
flg = false;
break;
}
}
}
if (flg && crane != 0 && std::find(total.begin(), total.end(), temp - 2) == total.end()) {
flg = false;
}
if (flg && turtle != 0 && std::find(total.begin(), total.end(), temp - 4) == total.end()) {
flg = false;
}
//仮定が間違っていたら1匹目を亀に修正して再計算
if (!flg) {
turtle = ((total[0] + 4) - 2 * N) / 2;
crane = N - turtle;
temp = turtle * 4 + crane * 2;
}
std::cout << std::count(total.begin(), total.end(), temp - 2) << " ";
std::cout << std::count(total.begin(), total.end(), temp - 4) << std::endl;
}
dgd1724