| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1334654 | WongYiKai | Council (JOI23_council) | C++20 | 4135 ms | 911720 KiB |
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll n,m;
cin >> n >> m;
ll a[n][m];
map<ll,ll> cover[1<<m];
vector<ll> cover2[1<<m];
cover2[0].resize(m+1,0);
ll sum[m+1];
memset(sum,0,sizeof(sum));
for (int i=0;i<n;i++){
ll num = 0;
ll cnt = 0;
for (int j=0;j<m;j++){
cin >> a[i][j];
num += (a[i][j]<<j);
if (a[i][j]==1) cnt++;
sum[j] += a[i][j];
}
cover[0][num]++;
}
for (int i=1;i<(1<<m);i++){
ll num = m;
vector<ll> on;
for (int j=0;j<m;j++){
if (i&(1<<j)) {
num--;
on.push_back(j);
}
}
cover2[i].resize(num+1,0);
for (ll idx=0;idx<1;idx++){
ll bit = on[idx];
//unblock bit
ll pos = bit-idx;
for (int k=0;k<(1<<(num+1));k++){
ll newk = k&((1<<pos)-1);
ll rightk = (k>>(pos+1));
newk += (rightk<<pos);
cover[i][newk] += cover[i-(1<<bit)][k];
}
}
}
/*
for (int i=0;i<(1<<m);i++){
ll num = m;
for (int j=0;j<m;j++){
if (i&(1<<j)) {
cout << "1 ";
num--;
}
else cout << "0 ";
}
cout << "\n";
for (int j=0;j<(1<<num);j++){
for (int k=0;k<num;k++){
if (j&(1<<k)) cout << "1 ";
else cout << "0 ";
}
cout << cover[i][j] << "\n";
}
cout << "\n";
}
*/
ll dis[(1<<m)];
memset(dis,-1,sizeof(dis));
ll cutoff = n/2;
for (int i=0;i<n;i++){
ll useless = 0;
ll cnt = 0;
ll num = m;
for (int j=0;j<m;j++){
if (sum[j]-a[i][j] > cutoff){
cnt++;
}
if (sum[j]-a[i][j] != cutoff){
useless += (1<<j);
num--;
}
}
if (dis[useless]==-1){
for (int j=0;j<(1<<num);j++){
ll x = __builtin_popcount(j);
cover2[useless][x] += cover[useless][j];
}
dis[useless] = 1;
}
for (int x=0;x<=num;x++){
if (cover2[useless][x] > 1){
cout << cnt + num - x << "\n";
break;
}
else if (cover2[useless][x] == 1){
ll me = 0;
for (int j=0;j<m;j++){
if (useless&(1<<j)) continue;
me += a[i][j];
}
if (me != x){
cout << cnt + num - x << "\n";
break;
}
}
}
}
}| # | 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... | ||||
