Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.90 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. bool compp(vector<int> a, vector<int> b){
  6.     //1 if a < b
  7.     if(a.size()<b.size()){
  8.         return 1;
  9.     }
  10.     for(int i=a.size()-1; i>=0;i--){
  11.         if(a[i]<b[i])
  12.             return 1;
  13.         if(a[i]>b[i])
  14.             return 0;
  15.     }
  16.     return 0;
  17. }
  18.  
  19. int main(){
  20.     string s;
  21.     int l;
  22.     cin>>l;
  23.     cin>>s;
  24.     vector<int> a;
  25.     for (auto i : s)
  26.         a.push_back(i-48);
  27.        
  28. //  for(auto i:a)
  29. //      cout<<i;
  30. //  cout<<"\n";
  31.     if(l%2==0){
  32.         vector<int> ans;
  33.         if(a[l/2]!=0){
  34.             int rem=0;
  35.             for(int i=l/2-1;i>=0;i--){
  36.                 ans.push_back((a[i]+a[i+l/2]+rem)%10);
  37.                 if((a[i]+a[i+l/2])+rem>=10)
  38.                     rem=1;
  39.                 else
  40.                     rem=0;
  41.             }
  42.             if(rem)
  43.                 ans.push_back(1);
  44.             for(auto i=ans.rbegin(); i!=ans.rend();i++)
  45.                 cout<<*i;
  46.             return 0;
  47.         }
  48.         else{
  49. //          cout<<"FSDYHUFJKOHSnl";
  50.             vector<int> anslz, ansrz;
  51.             int lz=l/2, rz=l/2;
  52.             while(lz>=0 && a[lz]==0)
  53.                 lz--;
  54.             while(rz<l && a[rz]==0)
  55.                 rz++;
  56.             rz--;
  57.             lz++;
  58.             //lz
  59.             vector<int> v1,v2;
  60.             for(int i=lz-1;i<l;i++)
  61.                 v1.push_back(a[i]);
  62.             for(int i=0;i<a.size()-v1.size();i++)
  63.                 v2.push_back(0);
  64.             for(int i=0;i<lz-1;i++)
  65.                 v2.push_back(a[i]);
  66.             int rem=0;
  67.             for(int i=v1.size()-1;i>=0;i--){
  68.                 anslz.push_back((v1[i]+v2[i]+rem)%10);
  69.                 if((v1[i]+v2[i]+rem)>=10)
  70.                     rem=1;
  71.                 else
  72.                     rem=0;
  73.             }
  74.             if(rem)
  75.                 anslz.push_back(1);
  76.             //rz
  77.             v1.resize(0);v2.resize(0);
  78.             for(int i=0;i<=rz;i++)
  79.                 v1.push_back(a[i]);
  80.             for(int i=0;i<a.size()-(a.size()-v1.size())-(a.size()-v1.size());i++)
  81.                 v2.push_back(0);
  82.             for(int i=rz+1;i<l;i++)
  83.                 v2.push_back(a[i]);
  84.            
  85.             rem=0;
  86.             for(int i=v1.size()-1;i>=0;i--){
  87.                 ansrz.push_back((v1[i]+v2[i]+rem)%10);
  88.                 if((v1[i]+v2[i]+rem)>=10)
  89.                     rem=1;
  90.                 else
  91.                     rem=0;
  92.             }
  93.             if(rem)
  94.                 ansrz.push_back(1);
  95. //          for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
  96. //              cout<<*i;
  97. //          cout<<"\nAHAHAHAH\n";
  98. //          for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
  99. //              cout<<*i;
  100. //          cout<<"\nAHAHAHAH\n"
  101. //          for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
  102. //                  cout<<*i;
  103. //          cout<<"\n";
  104. //          for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
  105. //                  cout<<*i;
  106.             if(compp(ansrz, anslz)){
  107.                 ans=ansrz;
  108.                 for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
  109.                     cout<<*i;
  110.             }
  111.             else{
  112.                 for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
  113.                     cout<<*i;
  114.             }
  115.             //comp suml, sumr
  116.             //print min
  117.             return 0;
  118.         }
  119. //      cout<<"fuck";
  120.        
  121.     }
  122.     else{
  123.         if(l==3){
  124.             if(a[1]==0){
  125.                 cout<<a[0]*10+a[2];
  126.             }
  127.             else{
  128.                 if(a[2]==0){
  129.                     cout<<10*a[1]+a[0]+a[2];
  130.                 }
  131.                 else{  
  132.                     cout<<min(a[0]*10+a[1]+a[2], a[1]*10+a[0]+a[2]);
  133.                 }
  134.             }
  135.             return 0;
  136.         }
  137.         vector<int> ans;
  138.        
  139.             vector<int> anslz, ansrz;
  140.         //ans1
  141.         if(a[l/2]!=0){
  142.             vector<int> v1,v2;
  143.             v1.push_back(0);
  144.             for(int i=0;i<l/2;i++)
  145.                 v1.push_back(a[i]);
  146.             for(int i=l/2;i<l;i++)
  147.                 v2.push_back(a[i]);
  148.             //popolam 1|23
  149.             int rem=0;
  150.             for(int i=v1.size()-1;i>=0;i--){
  151.                 anslz.push_back((v1[i]+v2[i]+rem)%10);
  152.                 if((v1[i]+v2[i]+rem)>=10)
  153.                     rem=1;
  154.                 else
  155.                     rem=0;
  156.             }
  157.             if(rem)
  158.                 anslz.push_back(1);
  159.         }
  160.         else{
  161.             int lz=l/2, rz=l/2;
  162.             while(lz>=0 && a[lz]==0)
  163.                 lz--;
  164.             while(rz<l && a[rz]==0)
  165.                 rz++;
  166.             rz--;
  167.             lz++;
  168.             //lz
  169.             vector<int> v1,v2;
  170.             for(int i=lz-1;i<l;i++)
  171.                 v1.push_back(a[i]);
  172.             for(int i=0;i<a.size()-v1.size();i++)
  173.                 v2.push_back(0);
  174.             for(int i=0;i<lz-1;i++)
  175.                 v2.push_back(a[i]);
  176.             int rem=0;
  177.             for(int i=v1.size()-1;i>=0;i--){
  178.                 anslz.push_back((v1[i]+v2[i]+rem)%10);
  179.                 if((v1[i]+v2[i]+rem)>=10)
  180.                     rem=1;
  181.                 else
  182.                     rem=0;
  183.             }
  184.             if(rem)
  185.                 anslz.push_back(1);
  186.             //rz
  187.             v1.resize(0);v2.resize(0);
  188.             for(int i=0;i<=rz;i++)
  189.                 v1.push_back(a[i]);
  190.             for(int i=0;i<a.size()-(a.size()-v1.size())-(a.size()-v1.size());i++)
  191.                 v2.push_back(0);
  192.             for(int i=rz+1;i<l;i++)
  193.                 v2.push_back(a[i]);
  194.            
  195.             rem=0;
  196.             for(int i=v1.size()-1;i>=0;i--){
  197.                 ansrz.push_back((v1[i]+v2[i]+rem)%10);
  198.                 if((v1[i]+v2[i]+rem)>=10)
  199.                     rem=1;
  200.                 else
  201.                     rem=0;
  202.             }
  203.             if(rem)
  204.                 ansrz.push_back(1);
  205. //          for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
  206. //              cout<<*i;
  207. //          cout<<"\nAHAHAHAH\n";
  208. //          for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
  209. //              cout<<*i;
  210. //          cout<<"\nAHAHAHAH\n"
  211. //          for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
  212. //                  cout<<*i;
  213. //          cout<<"\n";
  214. //          for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
  215. //                  cout<<*i;
  216.             if(compp(ansrz, anslz)){
  217.                 ans=ansrz;
  218.                 for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
  219.                     cout<<*i;
  220.             }
  221.             else{
  222.                 for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
  223.                     cout<<*i;
  224.             }
  225.             //comp suml, sumr
  226.             //print min
  227.             return 0;
  228.         }
  229.         //ans2
  230.         if(a[l/2+1]!=0){
  231.             vector<int> v1,v2;
  232.             v2.push_back(0);
  233.             for(int i=0;i<=l/2;i++)
  234.                 v1.push_back(a[i]);
  235.             for(int i=l/2+1;i<l;i++)
  236.                 v2.push_back(a[i]);
  237.             //popolam 1|23
  238.             int rem=0;
  239.             for(int i=v1.size()-1;i>=0;i--){
  240.                 ansrz.push_back((v1[i]+v2[i]+rem)%10);
  241.                 if((v1[i]+v2[i]+rem)>=10)
  242.                     rem=1;
  243.                 else
  244.                     rem=0;
  245.             }
  246.             if(rem)
  247.                 ansrz.push_back(1);
  248.         }
  249.         else{
  250.             vector<int> anslz, ansrz;
  251.             int lz=l/2, rz=l/2;
  252.             while(lz>=0 && a[lz]==0)
  253.                 lz--;
  254.             while(rz<l && a[rz]==0)
  255.                 rz++;
  256.             rz--;
  257.             lz++;
  258.             //lz
  259.             vector<int> v1,v2;
  260.             for(int i=lz-1;i<l;i++)
  261.                 v1.push_back(a[i]);
  262.             for(int i=0;i<a.size()-v1.size();i++)
  263.                 v2.push_back(0);
  264.             for(int i=0;i<lz-1;i++)
  265.                 v2.push_back(a[i]);
  266.             int rem=0;
  267.             for(int i=v1.size()-1;i>=0;i--){
  268.                 anslz.push_back((v1[i]+v2[i]+rem)%10);
  269.                 if((v1[i]+v2[i]+rem)>=10)
  270.                     rem=1;
  271.                 else
  272.                     rem=0;
  273.             }
  274.             if(rem)
  275.                 anslz.push_back(1);
  276.             //rz
  277.             v1.resize(0);v2.resize(0);
  278.             for(int i=0;i<=rz;i++)
  279.                 v1.push_back(a[i]);
  280.             for(int i=0;i<a.size()-(a.size()-v1.size())-(a.size()-v1.size());i++)
  281.                 v2.push_back(0);
  282.             for(int i=rz+1;i<l;i++)
  283.                 v2.push_back(a[i]);
  284.            
  285.             rem=0;
  286.             for(int i=v1.size()-1;i>=0;i--){
  287.                 ansrz.push_back((v1[i]+v2[i]+rem)%10);
  288.                 if((v1[i]+v2[i]+rem)>=10)
  289.                     rem=1;
  290.                 else
  291.                     rem=0;
  292.             }
  293.             if(rem)
  294.                 ansrz.push_back(1);
  295. //          for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
  296. //              cout<<*i;
  297. //          cout<<"\nAHAHAHAH\n";
  298. //          for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
  299. //              cout<<*i;
  300. //          cout<<"\nAHAHAHAH\n"
  301. //          for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
  302. //                  cout<<*i;
  303. //          cout<<"\n";
  304. //          for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
  305. //                  cout<<*i;
  306.             if(compp(ansrz, anslz)){
  307.                 ans=ansrz;
  308.                 for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
  309.                     cout<<*i;
  310.             }
  311.             else{
  312.                 for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
  313.                     cout<<*i;
  314.             }
  315.             return 0;
  316.             //comp suml, sumr
  317.             //print min
  318.         }
  319.         if(compp(ansrz, anslz)){
  320.                 ans=ansrz;
  321.                 for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
  322.                     cout<<*i;
  323.             }
  324.             else{
  325.                 for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
  326.                     cout<<*i;
  327.             }
  328.         return 0;
  329.     }
  330. }
  331. /*12
  332. 874840000012*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement