fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. string n;
  6. cin>>n;
  7. long long int sum=0,one=0,two=0,i=0;
  8. for(int j=0;j<n.size();j++)
  9. {
  10. if((n[j]-'0')%3==1&&one<3)
  11. one=(one+1);
  12. if((n[j]-'0')%3==2&&two<3)
  13. two=(two+1);
  14. sum=(sum+(n[j]-'0')%3);
  15. }
  16. string ans=0;
  17. while(n[i]=='0')
  18. i++;
  19. if(sum%3==0)
  20. {
  21. while(i<n.size())
  22. {
  23. ans+=n[i++];
  24. }
  25. }
  26. else if(sum%3==1)
  27. {
  28.  
  29. if(one>=1)
  30. {
  31. int flag=1;
  32. while(i<n.size())
  33. {
  34. if((n[i]-'0')%3==1&&flag!=0)
  35. {
  36. i++;
  37. flag--;
  38. }
  39. else
  40. ans+=n[i++];
  41. }
  42. }
  43. else if(two>=2)
  44. {
  45. int flag=2;
  46. while(i<n.size())
  47. {
  48. if((n[i]-'0')%3==2&&flag!=0)
  49. {
  50. i++;
  51. flag--;
  52. }
  53. else
  54. ans+=n[i++];
  55. }
  56. }
  57. }
  58. else
  59. {
  60. if(one>=2)
  61. {
  62. int flag=2;
  63. while(i<n.size())
  64. {
  65. if((n[i]-'0')%3==1&&flag!=0)
  66. {
  67. i++;
  68. flag--;
  69. }
  70. else
  71. ans+=n[i++];
  72. }
  73. }
  74. else if(two>=1)
  75. {
  76. int flag=1;
  77. while(i<n.size())
  78. {
  79. if((n[i]-'0')%3==2&&flag!=0)
  80. {
  81. i++;
  82. flag--;
  83. }
  84. else
  85. ans+=n[i++];
  86. }
  87. }
  88. }
  89. if(ans.size()>0)
  90. cout<<ans<<endl;
  91. else
  92. cout<<-1<<endl;
  93. return 0;
  94. }
Runtime error #stdin #stdout #stderr 0s 16048KB
stdin
1033
stdout
Standard output is empty
stderr
terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_M_construct null not valid