评选最优品牌WA90求调

image
这里是大样例没过,但是放到自测里就能过了,然后自己编译样例也是对的
image
好神奇。。。

代码:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <climits>
using namespace std;

int main(void) {
    int m, n;
    cin >> m >> n;
    cin.ignore(); 
    vector<vector<int>> pre(n);
    for (int i = 0; i < n; ++i) {
        string l;
        getline(cin, l);
        vector<int> p;
        for (char c : l) {
            p.push_back(c - '0');
        }
        pre[i] = p;
    }
    vector<bool> e(m + 1, false); 
    vector<int> cpos(n, 0); 
    
    while (true) {
        vector<int> v(m + 1, 0);
        int r = 0; 
        for (int i = 0; i < n; ++i) {
            int pos = cpos[i];
            while (pos < pre[i].size()) {
                int b = pre[i][pos];
                if (b == 0) break; 
                if (!e[b]) {
                    v[b]++;
                    break;
                }
                pos++;
            }
            cpos[i] = pos; 
        }
        for (int i = 1; i <= m; ++i) {
            if (!e[i]) {
                r++;
            }
        }
        if (r == 1) {
            for (int i = 1; i <= m; ++i) {
                if (!e[i]) {
                    cout << i << endl;
                    return 0;
                }
            }
        }
        int minv = INT_MAX;
        for (int i = 1; i <= m; ++i) {
            if (!e[i] && v[i] < minv) {
                minv = v[i];
            }
        }
        bool as = true;
        int fnz = -1;
        for (int i = 1; i <= m; ++i) {
            if (!e[i]) {
                if (fnz == -1) {
                    fnz = v[i];
                } else if (v[i] != fnz) {
                    as = false;
                    break;
                }
            }
        }
        if (as && fnz > 0) {
            cout << -fnz << endl;
            return 0;
        }
        bool eany = false;
        for (int i = 1; i <= m; ++i) {
            if (!e[i] && v[i] == minv) {
                e[i] = true;
                eany = true;
            }
        }
        if (!eany) {
            cout << -minv << endl;
            return 0;
        }
    }
    
    return 0;
}

应该是bug

可恶看到这个没A好难受。。。

额……
666
你の思维如闪电般跳跃
一定要看到 AC??
要不我送你一个??

\LARGE{\color{green}Accepted}

1 个赞

哈哈谢谢!

1 个赞

呵呵