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<<' ';
}