a53

domino2

a53
May 3rd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. ifstream in("domino.in");
  5. ofstream out("domino.out");
  6.  
  7. bool mic(string s,string r)
  8. {
  9. if(s.size()<r.size())
  10. return 1;
  11. if(s.size()>r.size())
  12. return 0;
  13. for(int i=0;i<s.size();i++)
  14. {
  15. if(s[i]<r[i])
  16. return 1;
  17. if(s[i]>r[i])
  18. return 0;
  19. }
  20. return 1;
  21. }
  22.  
  23. int main()
  24. {
  25. vector<string> v={"0"};
  26. string s,r;
  27. long long n,t,x;
  28. in>>t>>n;
  29. if(t==1)
  30. for(int i=1;i<=n;i++)
  31. {
  32. in>>x;
  33. out<<x*(x+1)*(x+2)/2<<" ";
  34. }
  35. else
  36. {
  37. for(int i=1;i<=n;i++)
  38. {
  39. in>>x;
  40. s+=to_string(x);
  41. }
  42. int ok=0;
  43. while(s.size())
  44. {
  45. r="";
  46. if(!ok)
  47. {
  48. while(s[0]=='0')
  49. s.erase(s.begin()+0);
  50. while(mic(r,v.back()) && s.size())
  51. r+=s[0],s.erase(s.begin()+0);
  52. if(!mic(r,v.back()))
  53. v.push_back(r);
  54. ok=1;
  55. }
  56. else
  57. {
  58. while(s.back()=='0')
  59. s.pop_back();
  60. while(mic(r,v.back()) && s.size())
  61. r+=s.back(),s.pop_back();
  62. if(!mic(r,v.back()))
  63. v.push_back(r);
  64. ok=0;
  65. }
  66. }
  67. for(int i=1;i<v.size();i++)
  68. out<<v[i]<<" ";
  69. }
  70. }
Add Comment
Please, Sign In to add comment