fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int vis[1000005];
  4. int n;
  5. void dfs(int i)
  6. {
  7. if(i>n)
  8. return;
  9. vis[i]=1;
  10. if(!vis[i+4])
  11. dfs(i+4);
  12. if(!vis[i+7])
  13. dfs(i+7);
  14. }
  15. int main()
  16. {
  17. scanf("%d",&n);
  18. memset(vis,0,sizeof(vis));
  19. dfs(0);
  20. set<int> s;
  21. //cout<<vis[n]<<"ab\n";
  22. //cout<<"abc";
  23. for(int i=1;i<=n;i++)
  24. {
  25. //cout<<2;
  26. if(vis[i]==1)
  27. {
  28. s.insert(i);
  29. //cout<<i<<' ';
  30. }
  31. }
  32. if(s.find(n)==s.end())
  33. {
  34. cout<<-1;
  35. return 0;
  36. }
  37. vector<int> v;
  38. while(n>0)
  39. {
  40. // cout<<n;
  41. if(s.find(n-7)!=s.end())
  42. {
  43. v.push_back(7);
  44. n-=7;
  45. continue;
  46. }
  47. if(s.find(n-4)!=s.end())
  48. {
  49. v.push_back(4);
  50. n-=4;
  51. }
  52. }
  53. sort(v.begin(),v.end());
  54. for(int i=0;i<v.size();i++)
  55. printf("%d",v[i]);
  56. return 0;
  57. }
Time limit exceeded #stdin #stdout 5s 7136KB
stdin
11
stdout
Standard output is empty