Submission
Status:
Pxxxxxxxxx
Score: 10
User: akuyga1
Problemset: ถังดักนิวทริโน
Language: cpp
Time: 0.511 second
Submitted On: 2025-02-26 00:25:57
#include "bits/stdc++.h"
using namespace std;
#define ii pair<int,int>
#define f first
#define s second
#define mp make_pair
int p[301];
set<int> B;
// void move(set<int> A) {
// cout<<'\n'<<A.size()<<'\n';
// for(auto i:A)cout<<i<<' ';
// if (A.count(0) == 0) {
// if(A.size()<B.size())B=A;
// for(auto i:A)
// {
// set<int> temp=A;
// temp.erase(i);
// temp.insert(p[i]);
// move(temp);
// }
// }
// }
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N,K;
cin>>N>>K;
vector<ii> A(N+1);
A[0]=mp(0,INT_MAX);
for(int i=1; i<=N; i++) {
cin>>A[i].f>>A[i].s;
p[i]=0;
for(int j=i-1; j>=0; j--)if(A[j].f<A[i].f&&A[j].s>A[i].s) {
p[i]=j;
break;
}
//cout<<p[i]<<' ';
}
set<int> C;
for(int i=0; i<K; i++) {
int x;
cin>>x;
C.insert(x);
}
B=C;
queue<set<int>> Q;
Q.push(C);
while(!Q.empty()) {
set<int> D=Q.front();
Q.pop();
if (D.count(0) == 0) {
if(D.size()<B.size())B=D;
for(auto i:D)
{
set<int> temp=D;
temp.erase(i);
temp.insert(p[i]);
Q.push(temp);
}
}
}
cout<<B.size()<<'\n';
for(auto i:B)cout<<i<<' ';
}