結果
| 問題 |
No.8 N言っちゃダメゲーム
|
| ユーザー |
prog470
|
| 提出日時 | 2016-09-23 19:52:13 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,087 bytes |
| コンパイル時間 | 584 ms |
| コンパイル使用メモリ | 69,208 KB |
| 実行使用メモリ | 19,200 KB |
| 最終ジャッジ日時 | 2024-11-17 19:53:42 |
| 合計ジャッジ時間 | 45,127 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 4 TLE * 7 |
ソースコード
#include<stdio.h>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <algorithm>
#include <sstream>
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int P, N[120005], K[120005], dp[120005];
int f(int n, int I) {
if (dp[n] != -1) {
return dp[n];
}
if (n == N[I] -1) {
return dp[I] = 1;
}
if (n >= N[I]) {
return dp[n] = 0;
}
bool flag = false;
for (int i = 1; i <= K[I]; i++) {
if (f(n + i, I) == 1) flag = true;
}
if (flag) return dp[n] = 0; //相手の宣言できる数の中に、一つでも「○」があるなら負け
else return dp[n] = 1;
}
int main() {
cin >> P;
for (int i = 0; i < P; i++) {
cin >> N[i] >> K[i];
}
for (int i = 0; i < P; i++) {
fill(dp, dp + 120005, -1);
bool flag = false;
for (int j = 1; j <= K[i]; j++) { //初手で一つでも価値ルートがあるならば、先行(自分)の勝ち
if (f(j, i) == 1) {
flag = true;
break;
}
}
if (flag) cout << "Win" << endl;
else cout << "Lose" << endl;
}
return 0;
}
prog470