| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1313021 | neonglitch | Norela (info1cup18_norela) | C++20 | 221 ms | 394404 KiB |
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;
#define int ll
const int P=100,M=2e7+10;
ll s[P],pw2[P];
ll fnl[M],cnt[M],val[M];
main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
pw2[0]=1;
for(int i=1;i<62;i++)pw2[i]=pw2[i-1]*2;
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++)
{
int sz;
cin>>sz;
for(int j=0;j<sz;j++)
{
int x;
cin>>x;
x--;
s[i]|=pw2[x];
}
}
int cn=m+2,ap=pw2[n];
for(int mk=1;mk<pw2[m];mk++)
{
int x=(mk&-mk);
int xg=__lg(x);
fnl[mk]=fnl[mk-x]^s[xg];
cnt[mk]=cnt[mk-x]+1; // number of bits on
val[mk]=val[mk-x]+pw2[m-1-xg];
if(fnl[mk]==(pw2[n]-1))
{
if(cnt[mk]<cn)
{
cn=cnt[mk];
ap=val[mk];
}
else if(cnt[mk]==cn and val[mk]>ap){
ap=val[mk];
}
}
}
cout<<cn<<endl;
for(int i=m-1;i>=0;i--)
{
if(ap&pw2[i])
{
cout<<m-i<<' ';
}
}
cout<<endl;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | 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... | ||||
