Submission #1134119

#TimeUsernameProblemLanguageResultExecution timeMemory
1134119bpptidpNorela (info1cup18_norela)C++20
0 / 100
28 ms33348 KiB
#include<bits/stdc++.h> using namespace std; using ll=long long; int n,m; vector<int>ans; vector<int>sp[27],koji[66],nemaju[66]; ll bsp[26],b; bool losi[(1<<25)],imao[(1<<25)]; bool bolje(const bitset<25>a,const bitset<25>b){ int c1=a.count(); int c2=b.count(); if(c1>c2)return 0; if(c1<c2)return 1; for(int i=0;i<a.size();++i){ if(a[i]>b[i])return 1; if(a[i]<b[i])return 0; } return 0; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cin>>n>>m; bitset<66>bb; for(int i=0,q,x;i<m;++i){ cin>>q; bb=0; while(q--){ cin>>x; sp[i].push_back(x); koji[x].push_back(i); bsp[i]+=(1<<x); bb[x]=1; } for(int j=1;j<=n;++j){ if(!bb[j])nemaju[j].push_back(i); } } for(int x=1;x<=n;++x){ int msk=0; for(int i:koji[x]) msk^=(1<<i); if(imao[msk])continue; imao[msk]=1; for(int s=msk;s;s=(s-1)&msk) if(__builtin_popcount(s)&1^1)losi[s]=1; } fill(imao,imao+(1<<25),0); for(int x=1;x<=n;++x){ int msk=0; for(int i:nemaju[x]) msk^=(1<<i); if(imao[msk])continue; imao[msk]=1; for(int s=msk;s;s=(s-1)&msk)losi[s]=1; } bitset<25>ans,nw; for(int i=0;i<m;++i) ans[i]=1; for(int msk=1;msk<(1<<m);++msk){ if(losi[msk])continue; b=0; for(int i=0;i<m;++i) if(msk&(1<<i))b^=bsp[i]; if(__builtin_popcountll(b)!=n)continue; nw=0; for(int j=0;j<m;++j) nw[j]=((msk&(1<<j))!=0); if(bolje(nw,ans))ans=nw; } cout<<ans.count()<<'\n'; for(int i=0;i<m;++i) if(ans[i])cout<<i+1<<' '; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...