답안 #497776

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
497776 2021-12-23T19:13:09 Z inksamurai Sob (COCI19_sob) C++17
0 / 110
2 ms 972 KB
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define sz(a) (int)a.size()
#define all(a) a.begin(),a.end()
#define rep(i,n) for(int i=0;i<n;i++)
#define crep(i,x,n) for(int i=x;i<n;i++)
#define drep(i,n) for(int i=n-1;i>=0;i--)
#define vec(...) vector<__VA_ARGS__>
#define _32bB6rn ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
typedef long long ll;
typedef long double ld;
using pii=pair<int,int>;
using vi=vector<int>;

int main(){
_32bB6rn;
	int n,m;
	cin>>n>>m;
	assert(n+m<=1000);
	vi a,b;
	rep(i,n){
		a.pb(i);
		b.pb(m+i);
	}
	vec(set<int>) adj(n);
	rep(i,n){
		rep(j,n){
			int x=a[i],y=b[j];
			if((x&y)==x){
				adj[i].insert(j);
			}
		}
	}
	vi usd(n,0);
	vec(pii) pans;
	while(true){
		int mn=1e9,x=-1;
		rep(v,n){
			if(usd[v]) continue;
			if(sz(adj[v])<mn){
				mn=sz(adj[v]);
				x=v;
			}
		}
		if(x==-1) break;
		assert(sz(adj[x])>0);
		auto it=adj[x].begin();
		int y=*it;
		pans.pb({x,y});
		usd[x]=1;
		rep(v,n){
			if(usd[v]) continue;
			if(adj[v].find(y)!=adj[v].end()){
				adj[v].erase(adj[v].find(y));
			}
		}
	}
	for(auto p : pans){
		cout<<a[p.fi]<<" "<<b[p.se]<<"\n";
	}
//	
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 460 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 436 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Runtime error 2 ms 972 KB Execution killed with signal 6
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 460 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -