IQOverload

CF 250B

Aug 13th, 2014
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.47 KB | None | 0 0
  1. #include <algorithm>
  2. #include <bitset>
  3. #include <deque>
  4. #include <cmath>
  5. #include <cstdio>
  6. #include <cstdlib>
  7. #include <cstring>
  8. #include <iostream>
  9. #include <list>
  10. #include <map>
  11. #include <queue>
  12. #include <set>
  13. #include <sstream>
  14. #include <stack>
  15. #include <string>
  16. #include <utility>
  17. #include <vector>
  18.  
  19. #define fst first
  20. #define snd second
  21. #define all(x) (x).begin(), (x).end()
  22. #define clr(a, v) memset(a, v, sizeof(a))
  23. #define pb push_back
  24. #define mp make_pair
  25. #define sz(x) (int)(x.size())
  26. #define FORN(i,s,n) for(int i=s;i<(int)(n);i++)
  27. #define FOR(i,n) FORN(i,0,n)
  28. #define FORIT(i,x) for( typeof x.begin()  i=x.begin(); i!=x.end(); i++ )
  29. #define trace(x)    cerr << #x << ": " << x << endl;
  30. #define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
  31.  
  32. using namespace std;
  33.  
  34. typedef long long int64;
  35. typedef vector <int> vi;
  36. typedef pair <int,int> ii;
  37. typedef vector <string> vs;
  38. typedef vector <ii> vii;
  39.  
  40. const int INF = 2e9+9;
  41.  
  42. int main(){
  43.     int sum, lim;
  44.     cin>>sum>>lim;
  45.     int acm[lim+1];
  46.     priority_queue< ii > PQ;
  47.     acm[0]=0;
  48.     FORN(i,1,lim+1){
  49.         acm[i]=acm[i-1]+( i&-i );
  50.         PQ.push ( mp(i&-i,i) );
  51.     }
  52.     if (acm[lim]<sum) cout<<-1<<endl;
  53.     else{
  54.         vi ans;
  55.         int diff=acm[lim]-sum;
  56.         while(!PQ.empty()){
  57.             ii a=PQ.top(); PQ.pop();\
  58.             if (diff-a.fst>=0) diff-=a.fst;
  59.             else ans.pb(a.snd);
  60.         }
  61.         if(diff>0) cout<<-1<<endl;
  62.         else{
  63.             cout<<sz(ans)<<endl;
  64.             FOR(i,sz(ans)) cout<<ans[i]<<" ";
  65.             cout<<endl;
  66.         }
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment