이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pll pair<ll,ll>
#define pii pair<int,int>
#define fs first
#define sc second
inline int calc(int k){
int re = 0;
while(!(k&1))k>>=1,re++;
return re;
}
struct node{
int val;
node(){}
node(int k){
val = k;
}
bool operator<(node b)const{
return __builtin_popcount(val)==__builtin_popcount(b.val)?val<b.val:__builtin_popcount(val)<__builtin_popcount(b.val);
}
};
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n,m;
cin>>n>>m;
if(__builtin_popcount(n) == 1){
int start = m;
for(int i = m;i<n+m;i++){
if(calc(start)<calc(i))start = i;
}
int now = start;
for(int i = 0;i<n;i++){
cout<<i<<' '<<now<<'\n';
now++;
if(now == n+m)now = m;
}
}
else{
set<node> s1,s2;
for(int i = 0;i<n;i++)s1.insert(node(i));
for(int i = m;i<n+m;i++)s2.insert(node(i));
for(auto it = s1.rbegin();it != s1.rend();it++){
cout<<it->val<<' ';
int val = s2.begin()->val;
for(auto &j:s2){
if((it->val&j.val) == it->val)val = j.val;
}
cout<<val<<endl;
s2.erase(node(val));
}
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |