Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <vector>
- #include <iostream>
- using namespace std;
- bool check(int pos, int p, int q, int it){
- if(it == 0 || q < pos || p > pos) return false;
- int mi = (p + q) >> 1;
- --it;
- if(pos == mi){
- if(it == 0) return true;
- return false;
- }
- if(pos < mi) return check(pos,p,mi - 1,it);
- return check(pos,mi + 1,q,it);
- }
- int main(){
- int x,it;
- scanf("%d %d",&x,&it);
- vector<int> v;
- for(int i = 0;i < 10000;++i){
- if(check(x,0,i,it)) v.push_back(i + 1);
- }
- int sz = v.size(),ans = 0;
- vector<int> l,r;
- for(int i = 0;i < sz;){
- int e = i + 1;
- while(e < sz && v[e] - v[i] == e - i) ++e;
- l.push_back(v[i]);
- r.push_back(v[e - 1]);
- i = e;
- ++ans;
- }
- printf("%d\n",ans);
- for(int i = 0;i < ans;++i)
- printf("%d %d\n",l[i],r[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment