代码如下:
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
char ch;
int n, m, ans, maxx, cnt, val[105];
struct STRUCT
{
int a, b[105];
} c[105];
bool cmp(STRUCT x, STRUCT y)
{
return x.a > y.a;
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= m; i++)
cin >> c[i].a;
for (int i = 1; i <= n; i++)
{
val[i] = i;
for (int j = 1; j <= m; j++)
{
cin >> ch;
if (ch == 'o')
{
c[j].b[i] = 1;
val[i] += c[j].a;
}
}
if (val[i] > maxx)
{
maxx = val[i];
cnt = 1;
}
else if (val[i] == maxx)
++cnt;
}
sort(c + 1, c + 1 + m, cmp);
for (int i = 1; i <= n; i++)
{
ans = 0;
if (maxx <= val[i])
{
if (cnt == 1)
cout << 0 << endl;
else
cout << 1 << endl;
continue;
}
for (int j = 1; j <= m; j++)
{
if (c[j].b[i])
continue;
val[i] += c[j].a;
++ans;
if (maxx < val[i])
cout << ans << endl;
}
}
return 0;
}