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>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
typedef int ll;
typedef vector<ll> vi;
typedef vector<vector<ll>> vvi;
typedef pair<ll,ll> pi;
typedef map<ll,ll> mi;
typedef long double ld;
typedef vector<ld> vd;
typedef vector<vector<ld>> vvd;
typedef pair<ld,ld> pd;
#define ff first
#define ss second
#define srt(a) sort(a.begin(),a.end());
#define fip(k, n) for (ll i = k; i < n; i++)
#define fjp(k, n) for (ll j = k; j < n; j++)
#define fin(k, n) for (ll i = k; i >= n; i--)
#define fjn(k, n) for (ll j = k; j >= n; j--)
#define fp(k, n, m) for (ll k = n; k < m; k++)
#define fn(k, n, m) for (ll k = n; k >= m; k--)
#define ordered_set tree<pi, null_type,less< pi >, rb_tree_tag,tree_order_statistics_node_update>
#define totalOne(n) __builtin_popcount(n)
#define backZero(n) __builtin_ctzll(n)
#define frontZero(n) __builtin_clzll(n)
#define fx(k) for ( auto x : k )
#define test ll t;cin >> t;while (t--)
#define nli "\n"
ll n,m,tp,tp2,res,cnt,sum,tptp,ans;
const ll mx = 3e5+5;
const ll mod = 1e9+7;
bool f = false;
set<ll> st;
ll a[mx];
ll tnc[25];
ll bits[(1 << 15)];
ll na[(1 << 15)];
ll one,zero;
vi v;
int main(){
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
// #ifndef ONLINE_JUDGE
// freopen("input1.txt", "r", stdin);
// freopen("output1.txt", "w", stdout);
// freopen("error1.txt", "w", stderr);
// #endif // ONLINE_JUDGE
cin>>n>>m;
ll cnst = (1 << m) - 1;
fip(0,n){
cnt = 0;
fjp(0,m){
cin>>tp;
cnt |= (tp<<j);
if(tp)
tnc[j]++;
}
a[i] = cnt;
bits[cnt]++;
st.insert(cnt);
}
res = 0,one = 0,zero = 0;
fjp(0,m){
if(tnc[j]==(n/2))
zero |= (1<<j);
else if(tnc[j]==(n/2)+1)
one |= (1<<j);
else if(tnc[j]>=(n/2)+2)
res++;
}
fx(st)
v.push_back(x);
fip(0,(long long)v.size()){
bits[v[i]]--;
ans = 0;
fjp(0,(long long)v.size()){
if(bits[v[j]]==0)
continue;
tp = totalOne((one & (cnst ^ (v[j]&v[i]))) | (zero & (cnst ^ (v[j]|v[i]))));
ans = max(ans,tp+res);
}
na[v[i]] = ans;
bits[v[i]]++;
}
fip(0,n)
cout<<na[a[i]]<<nli;
// cerr << "Time elapsed: " << setprecision(6) << 1000.0 * clock() / CLOCKS_PER_SEC << "ms\n";
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... |