# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|
811279 | | pcc | Sob (COCI19_sob) | C++14 | | 33 ms | 3832 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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... |