結果

問題 No.3323 岩井星式ジャンケン
コンテスト
ユーザー 北杜
提出日時 2025-11-01 15:12:25
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 14 ms / 2,000 ms
コード長 1,458 bytes
コンパイル時間 3,567 ms
コンパイル使用メモリ 281,780 KB
実行使用メモリ 7,720 KB
最終ジャッジ日時 2025-11-01 15:12:31
合計ジャッジ時間 4,624 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 26
権限があれば一括ダウンロードができます

ソースコード

diff #

// やけくそTLE解.

//#define _GLIBCXX_DEBUG
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define rep(i, n) for (ll i = 0; i < (ll)(n); i++)
#define all(a) (a).begin(), (a).end()
const ll INF32 = 2e9;
const ll INF64 = 4e18;

void printYN(bool ok){
    if(ok)cout << "Yes" << endl;
    else cout << "No" << endl;
    return;
}

signed main() {
    int N, M;
    cin >> N >> M;
    vector<string> S(N);
    vector<bool> won(N, false);
    string ans = "";
    rep(i, N)cin >> S[i];
    rep(i, M){
        bool G = false,C = false, P = false;
        rep(j, N){
            if(won[j])continue;
            if(S[j][i]=='G')G = true;
            if(S[j][i]=='C')C = true;
            if(S[j][i]=='P')P = true;
        }
        if(G&&C&&P){
            cout << -1 << endl;
            return 0;
        }
        if(C&&(!P)){
            ans.push_back('G');
            rep(j, N){
                if(S[j][i]=='C')won[j]=true;
            }
        }
        else if(P&&(!G)){
            ans.push_back('C');
            rep(j, N){
                if(S[j][i]=='P')won[j]=true;
            }
        }
        else if(G&&(!C)){
            ans.push_back('P');
            rep(j, N){
                if(S[j][i]=='G')won[j]=true;
            }
        }
        else ans.push_back('G');
    }
    bool ok = true;
    rep(i, N){
        if(!won[i])ok = false;
    }
    if(ok)cout << ans << endl;
    else cout << -1 << endl;
    return 0;
}
0