Submission #497776

#TimeUsernameProblemLanguageResultExecution timeMemory
497776inksamuraiSob (COCI19_sob)C++17
0 / 110
2 ms972 KiB
#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; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...