結果
| 問題 | No.769 UNOシミュレータ | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2020-04-10 21:20:19 | 
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 91 ms / 2,000 ms | 
| コード長 | 1,419 bytes | 
| コンパイル時間 | 520 ms | 
| コンパイル使用メモリ | 62,172 KB | 
| 実行使用メモリ | 12,928 KB | 
| 最終ジャッジ日時 | 2024-11-22 09:35:46 | 
| 合計ジャッジ時間 | 2,196 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 23 | 
ソースコード
#include <iostream>
#include <vector>
using namespace std;
int main(){
    int N,M,id=0;
    cin >> N >> M;
    vector<int> card(N,0);
    vector<string> log(M+1);
    for(int l=0;l<M;l++)cin >> log[l];
    
    for(int l=0,dir=1;;l++){
        if(log[l]=="number"){
            card[id]--;
            if(l+1==M)break;
            id=(id+dir+N)%N;
        }
        if(log[l]=="drawtwo"){
            int p=0;
            while(log[l+p]=="drawtwo"){
                card[id]--;
                id=(id+N+dir)%N;
                p++;
            }
            card[id]+=2*p;
            l+=p-1;
            if(l+1==M){
                id=(id-dir+N)%N;
                break;
            }
            id=(id+N+dir)%N;
        }
        if(log[l]=="drawfour"){
            int p=0;
            while(log[l+p]=="drawfour"){
                card[id]--;
                id=(id+N+dir)%N;
                p++;
            }
            card[id]+=4*p;
            l+=p-1;
            if(l+1==M){
                id=(id-dir+N)%N;
                break;
            }
            id=(id+N+dir)%N;
        }
        if(log[l]=="skip"){
            card[id]--;
            if(l+1==M)break;
            id=(id+2*dir+N)%N;
        }
        if(log[l]=="reverse"){
            card[id]--;
            if(l+1==M)break;
            dir=-dir;id=(id+dir+N)%N;
        }
    }
    cout << id+1 << " "<< -card[id] << endl;
    return 0;
}
            
            
            
        