101172024-03-27 11:33:06111Játék a síkoncpp17Elfogadva 100/100293ms6488 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

struct P{
	int x,y;
};

bool kuhn(vector<vector<int>>& g, vector<int>& b, int i) {
	vector<int> v(g.size());
	auto dfs = [&](auto self, int i) {
		if (v[i]) {
			return 0;
		}
		v[i] = 1;
		for (int j : g[i]) {
			if (b[j] == -2) {
				continue;
			}
			if (b[j] == -1 || self(self, b[j])) {
				b[j] = i;
				return 1;
			}
		}
		return 0;
	};
	return dfs(dfs, i);
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N;
	cin>>N;
	vector<P>v(N);
	for(int i=0;i<N;i++){
		cin>>v[i].x>>v[i].y;
	}
	int p=partition(v.begin(),v.end(),[&](P p){return (p.x&1)==(p.y&1);})-v.begin(); // -5 % 2 = -1
	vector<vector<int>>g(p),gg(N-p);
	for(int i=0;i<p;i++){
		for(int j=p;j<N;j++){
			if(abs(v[j].x-v[i].x)+abs(v[j].y-v[i].y)==1){
				g[i].push_back(j-p);
				gg[j-p].push_back(i);
			}
		}
	}
	vector<int>b(N-p,-1),bb(p,-1);
	for(int i=0;i<p;i++){
		kuhn(g,b,i);
	}
	for(int i=0;i<N-p;i++){
		kuhn(gg,bb,i);
	}
	vector<int>ans;
	for(int i=0;i<N-p;i++){
		if(b[i]==-1){
			ans.push_back(p+i);
			continue;
		}
		int x=b[i];
		b[i]=-2;
		if(kuhn(g,b,x)){
			ans.push_back(p+i);
			b[i]=-1;
		}
		else{
			b[i]=x;
		}
	}
	for(int i=0;i<p;i++){
		if(bb[i]==-1){
			ans.push_back(i);
			continue;
		}
		int x=bb[i];
		bb[i]=-2;
		if(kuhn(gg,bb,x)){
			ans.push_back(i);
			bb[i]=-1;
		}
		else{
			bb[i]=x;
		}
	}
	cout<<ans.size()<<'\n';
	for(int i:ans){
		cout<<v[i].x<<' '<<v[i].y<<'\n';
	}
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1824 KiB
2Elfogadva7ms2276 KiB
subtask29/9
3Elfogadva3ms2264 KiB
4Elfogadva3ms2480 KiB
subtask310/10
5Elfogadva3ms2588 KiB
6Elfogadva3ms2668 KiB
7Elfogadva3ms2808 KiB
8Elfogadva3ms3040 KiB
9Elfogadva3ms3108 KiB
10Elfogadva3ms3240 KiB
11Elfogadva3ms3332 KiB
12Elfogadva3ms3456 KiB
subtask410/10
13Elfogadva4ms3656 KiB
14Elfogadva4ms3844 KiB
15Elfogadva4ms4064 KiB
16Elfogadva4ms4212 KiB
subtask516/16
17Elfogadva4ms4308 KiB
18Elfogadva4ms4376 KiB
19Elfogadva4ms4380 KiB
20Elfogadva4ms4512 KiB
21Elfogadva8ms4660 KiB
subtask618/18
22Elfogadva4ms4632 KiB
23Elfogadva4ms4556 KiB
24Elfogadva4ms4568 KiB
25Elfogadva4ms4584 KiB
26Elfogadva4ms4700 KiB
subtask737/37
27Elfogadva20ms5312 KiB
28Elfogadva19ms5328 KiB
29Elfogadva68ms5680 KiB
30Elfogadva293ms5756 KiB
31Elfogadva131ms5780 KiB
32Elfogadva21ms5764 KiB
33Elfogadva32ms5344 KiB
34Elfogadva54ms5352 KiB
35Elfogadva39ms5368 KiB
36Elfogadva24ms6008 KiB
37Elfogadva41ms6244 KiB
38Elfogadva26ms6204 KiB
39Elfogadva75ms6332 KiB
40Elfogadva83ms6384 KiB
41Elfogadva134ms6452 KiB
42Elfogadva86ms6488 KiB