UVa 10404 - Bachet's Game Solution

#include <iostream>
#include <vector>
using namespace std;
int m;
void game(vector<int> &a,vector<int> &b,int n){
    a[0]=0;
    a[1]=1;
    for(int i=2;i<=n;i++){
        for(int j=0;j<m&&!a[i];j++){
            if(i>=b[j])
                a[i]|=!a[i-b[j]];
        }
    }
}
int main(){
    ios::sync_with_stdio(0);
    int n;
    while(cin>>n){
        cin>>m;
        vector<int> b(m);
        vector<int> a(n+1);
        for(int i=0;i<m;i++)
            cin>>b[i];
        game(a,b,n);
        if(a[n])
            cout<<"Stan wins"<<endl;
        else
            cout<<"Ollie wins"<<endl;
    }
}

Comments