結果
問題 |
No.112 ややこしい鶴亀算
|
ユーザー |
![]() |
提出日時 | 2015-02-23 14:42:33 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,002 bytes |
コンパイル時間 | 401 ms |
コンパイル使用メモリ | 54,704 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-23 21:55:46 |
合計ジャッジ時間 | 1,231 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 WA * 5 |
ソースコード
#include<iostream> using namespace std; int n; int a[51]; int turu, kame; bool count(int t) { int tmp = t; turu = 0; kame = 0; for( int i = 0; i < n; i++ ) { if ( t == 2 ) turu++; else if ( t == 4 ) kame++; else return false; t = -(a[i+1] - a[i] - t); } //最後に0番目の動物の足の本数が矛盾していないかも確かめる!! if ( t == tmp ) return true; return false; } int main() { cin >> n; for( int i = 0; i < n; i++ ) cin >> a[i]; a[n] = a[0]; //a[i+1]-a[i] = i番目の動物の足の本数 - i+1番目の動物の足の本数 //0番目の動物の足の本数(鶴orカメ)を決めれば、そのあとは一意(であり矛盾するかどうかはO(N)で分かる) //矛盾しないルートを選択して、このときの各動物の足のから、各動物が鶴か亀かを判定する。最後にカウント。 if ( count(2) ) { cout << turu << " " << kame << endl; return 0; } count(4); cout << turu << " " << kame << endl; return 0; }