This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define isz(x) ((int)(x).size())
#define sumof(x) accumulate(all(x), 0ll)
const int N=3e5+1, M=20;
int n, m, a[N][M], cnt[M], msk[N];
pair<int, int> f[1<<M];
int get_val(int idx, int val){
return val==-1?-1:__builtin_popcount(idx&(~msk[val]));
}
void optimize(int idx, int val){
int t1=get_val(idx, val);
int t2=get_val(idx, f[idx].first);
int t3=get_val(idx, f[idx].second);
if (t1>t2){
f[idx].second=f[idx].first;
f[idx].first=val;
}else if (t1>t3 && val!=f[idx].first){
f[idx].second=val;
}
}
void optimize(int idx, pair<int, int> val){
optimize(idx, val.first);
optimize(idx, val.second);
}
void solve(){
cin >> n >> m;
for (int j=0; j<(1<<m); ++j) f[j]={-1, -1};
for (int i=1; i<=n; ++i) for (int j=0; j<m; ++j) cin >> a[i][j], msk[i]^=a[i][j]<<j, cnt[j]+=a[i][j];
for (int i=1; i<=n; ++i) optimize((~msk[i])&((1<<m)-1), i);
for (int i=(1<<m)-1; i>=0; --i) for (int j=0; j<m; ++j) if (i>>j&1) optimize(i^(1<<j), f[i]);
for (int i=0; i<(1<<m); ++i) for (int j=0; j<m; ++j) if (i>>j&1) optimize(i, f[i^(1<<j)]);
int val=n/2;
for (int i=1; i<=n; ++i){
int ans=0;
int mask=0;
for (int j=0; j<m; ++j){
cnt[j]-=a[i][j];
if (cnt[j]>val) ++ans;
if (cnt[j]==val) mask^=1<<j;
}
int t=f[mask].first;
if (t==i) t=f[mask].second;
if (t!=-1) ans+=get_val(mask, t);
cout << ans << '\n';
for (int j=0; j<m; ++j) cnt[j]+=a[i][j];
}
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int ntests=1;
// cin >> ntests;
for (int i=1; i<=ntests; ++i) solve();
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |