結果

問題 No.2278 Time Bomb Game 2
ユーザー lddlinan
提出日時 2023-04-24 21:15:21
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 48 ms / 2,000 ms
コード長 1,511 bytes
コンパイル時間 745 ms
コンパイル使用メモリ 86,112 KB
最終ジャッジ日時 2025-02-12 13:59:22
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 70
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:32:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   32 |     scanf("%d %d %d", &n, &k, &t);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
main.cpp:33:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   33 |     scanf("%s", ib);
      |     ~~~~~^~~~~~~~~~

ソースコード

diff #

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <map>
#include <vector>
#include <queue>
#include <deque>
#include <set>
#include <stack>
#include <algorithm>
#include <array>
#include <unordered_set>
#include <unordered_map>
#include <string>
using namespace std;

bool rcmp(int a, int b) { return a>b; }
typedef long long LL;
class mypcmp {
public:
    bool operator()(const int& a, const int& b) {
        return a<b;
    }
};



char ib[200004];
int main() {
    int n, i, k, t, m, d;
    int i1, i2, j, x;
    scanf("%d %d %d", &n, &k, &t);
    scanf("%s", ib);
    k--;
    for (i2=k; i2<n; i2++) if (ib[i2]!=ib[k]) break;
    for (i1=k; i1>=0; i1--) if (ib[i1]!=ib[k]) break;
    d=i2-k;
    m=0;
    if (i2<n&&t>=d) {
        d = t-d;
        if ((d&1)==0) m=1;
    }

    if (m==0) {
        d=k-i1; if (i1>=0&&t>=d) {
            d=t-d; if ((d&1)==0) m=1;
        }
    }
    if (m&&i2-i1==2) {
        // no joggling?
        x=1;
        if (i2<n) {
            for (j=i2; j<n; j++) if (ib[j]==ib[k]) break;
            d=j-k; if (j<n&&t>=d) {
                d=t-d; if ((d&1)) x=0;
            } else x=0;
        }
        if (x==1) {
            if (i1>=0) {
                for (j=i1; j>=0; j--) if (ib[j]==ib[k]) break;
                d=k-j; if (j>=0&&t>=d) {
                    d=t-d; if ((d&1))  x=0;
                } else x=0;
            }
        }
        if (x) m=0;
    }
    if (ib[k]=='B') m^=1;
    if (m) printf("Alice\n"); else printf("Bob\n");
    return 0;
}
0