2015年7月1日 星期三

2015/07/01 Codeforces 549B. Looksery Party

// http://codeforces.com/problemset/problem/549/B
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>

using namespace std;

int N, M = 0;
char c[200][200];

int avoid[200];
int cnt[200] = {0};

vector<int> Ans;

int main()
{
    scanf("%d", &N);

    for(int Ni = 0; Ni < N; Ni++)
        scanf("%s", c[Ni]);

    for(int Ni = 0; Ni < N; Ni++)
        scanf("%d", &avoid[Ni]);

    while(1)
    {
        bool OK = true;

        for(int Ni = 0; Ni < N; Ni++)
        {
            if( cnt[Ni] == avoid[Ni] )
            {
                OK = false;
                Ans.push_back(Ni);

                for(int Nj = 0; Nj < N; Nj++)
                    if( c[Ni][Nj]-'0' ) cnt[Nj]++;
            }
        }

        if( OK ) break;
    }

    printf("%d\n", Ans.size());

    for(int Ai = 0; Ai < Ans.size(); Ai++)
    {
        printf("%d", Ans[Ai]+1);

        if( Ai+1 == Ans.size() ) puts("");
        else printf(" ");
    }
}

1 則留言: