Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- bool compp(vector<int> a, vector<int> b){
- //1 if a < b
- if(a.size()<b.size()){
- return 1;
- }
- for(int i=a.size()-1; i>=0;i--){
- if(a[i]<b[i])
- return 1;
- if(a[i]>b[i])
- return 0;
- }
- return 0;
- }
- int main(){
- string s;
- int l;
- cin>>l;
- cin>>s;
- vector<int> a;
- for (auto i : s)
- a.push_back(i-48);
- // for(auto i:a)
- // cout<<i;
- // cout<<"\n";
- if(l%2==0){
- vector<int> ans;
- if(a[l/2]!=0){
- int rem=0;
- for(int i=l/2-1;i>=0;i--){
- ans.push_back((a[i]+a[i+l/2]+rem)%10);
- if((a[i]+a[i+l/2])+rem>=10)
- rem=1;
- else
- rem=0;
- }
- if(rem)
- ans.push_back(1);
- for(auto i=ans.rbegin(); i!=ans.rend();i++)
- cout<<*i;
- return 0;
- }
- else{
- // cout<<"FSDYHUFJKOHSnl";
- vector<int> anslz, ansrz;
- int lz=l/2, rz=l/2;
- while(lz>=0 && a[lz]==0)
- lz--;
- while(rz<l && a[rz]==0)
- rz++;
- rz--;
- lz++;
- //lz
- vector<int> v1,v2;
- for(int i=lz-1;i<l;i++)
- v1.push_back(a[i]);
- for(int i=0;i<a.size()-v1.size();i++)
- v2.push_back(0);
- for(int i=0;i<lz-1;i++)
- v2.push_back(a[i]);
- int rem=0;
- for(int i=v1.size()-1;i>=0;i--){
- anslz.push_back((v1[i]+v2[i]+rem)%10);
- if((v1[i]+v2[i]+rem)>=10)
- rem=1;
- else
- rem=0;
- }
- if(rem)
- anslz.push_back(1);
- //rz
- v1.resize(0);v2.resize(0);
- for(int i=0;i<=rz;i++)
- v1.push_back(a[i]);
- for(int i=0;i<a.size()-(a.size()-v1.size())-(a.size()-v1.size());i++)
- v2.push_back(0);
- for(int i=rz+1;i<l;i++)
- v2.push_back(a[i]);
- rem=0;
- for(int i=v1.size()-1;i>=0;i--){
- ansrz.push_back((v1[i]+v2[i]+rem)%10);
- if((v1[i]+v2[i]+rem)>=10)
- rem=1;
- else
- rem=0;
- }
- if(rem)
- ansrz.push_back(1);
- // for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
- // cout<<*i;
- // cout<<"\nAHAHAHAH\n";
- // for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
- // cout<<*i;
- // cout<<"\nAHAHAHAH\n"
- // for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
- // cout<<*i;
- // cout<<"\n";
- // for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
- // cout<<*i;
- if(compp(ansrz, anslz)){
- ans=ansrz;
- for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
- cout<<*i;
- }
- else{
- for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
- cout<<*i;
- }
- //comp suml, sumr
- //print min
- return 0;
- }
- // cout<<"fuck";
- }
- else{
- if(l==3){
- if(a[1]==0){
- cout<<a[0]*10+a[2];
- }
- else{
- if(a[2]==0){
- cout<<10*a[1]+a[0]+a[2];
- }
- else{
- cout<<min(a[0]*10+a[1]+a[2], a[1]*10+a[0]+a[2]);
- }
- }
- return 0;
- }
- vector<int> ans;
- vector<int> anslz, ansrz;
- //ans1
- if(a[l/2]!=0){
- vector<int> v1,v2;
- v1.push_back(0);
- for(int i=0;i<l/2;i++)
- v1.push_back(a[i]);
- for(int i=l/2;i<l;i++)
- v2.push_back(a[i]);
- //popolam 1|23
- int rem=0;
- for(int i=v1.size()-1;i>=0;i--){
- anslz.push_back((v1[i]+v2[i]+rem)%10);
- if((v1[i]+v2[i]+rem)>=10)
- rem=1;
- else
- rem=0;
- }
- if(rem)
- anslz.push_back(1);
- }
- else{
- int lz=l/2, rz=l/2;
- while(lz>=0 && a[lz]==0)
- lz--;
- while(rz<l && a[rz]==0)
- rz++;
- rz--;
- lz++;
- //lz
- vector<int> v1,v2;
- for(int i=lz-1;i<l;i++)
- v1.push_back(a[i]);
- for(int i=0;i<a.size()-v1.size();i++)
- v2.push_back(0);
- for(int i=0;i<lz-1;i++)
- v2.push_back(a[i]);
- int rem=0;
- for(int i=v1.size()-1;i>=0;i--){
- anslz.push_back((v1[i]+v2[i]+rem)%10);
- if((v1[i]+v2[i]+rem)>=10)
- rem=1;
- else
- rem=0;
- }
- if(rem)
- anslz.push_back(1);
- //rz
- v1.resize(0);v2.resize(0);
- for(int i=0;i<=rz;i++)
- v1.push_back(a[i]);
- for(int i=0;i<a.size()-(a.size()-v1.size())-(a.size()-v1.size());i++)
- v2.push_back(0);
- for(int i=rz+1;i<l;i++)
- v2.push_back(a[i]);
- rem=0;
- for(int i=v1.size()-1;i>=0;i--){
- ansrz.push_back((v1[i]+v2[i]+rem)%10);
- if((v1[i]+v2[i]+rem)>=10)
- rem=1;
- else
- rem=0;
- }
- if(rem)
- ansrz.push_back(1);
- // for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
- // cout<<*i;
- // cout<<"\nAHAHAHAH\n";
- // for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
- // cout<<*i;
- // cout<<"\nAHAHAHAH\n"
- // for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
- // cout<<*i;
- // cout<<"\n";
- // for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
- // cout<<*i;
- if(compp(ansrz, anslz)){
- ans=ansrz;
- for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
- cout<<*i;
- }
- else{
- for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
- cout<<*i;
- }
- //comp suml, sumr
- //print min
- return 0;
- }
- //ans2
- if(a[l/2+1]!=0){
- vector<int> v1,v2;
- v2.push_back(0);
- for(int i=0;i<=l/2;i++)
- v1.push_back(a[i]);
- for(int i=l/2+1;i<l;i++)
- v2.push_back(a[i]);
- //popolam 1|23
- int rem=0;
- for(int i=v1.size()-1;i>=0;i--){
- ansrz.push_back((v1[i]+v2[i]+rem)%10);
- if((v1[i]+v2[i]+rem)>=10)
- rem=1;
- else
- rem=0;
- }
- if(rem)
- ansrz.push_back(1);
- }
- else{
- vector<int> anslz, ansrz;
- int lz=l/2, rz=l/2;
- while(lz>=0 && a[lz]==0)
- lz--;
- while(rz<l && a[rz]==0)
- rz++;
- rz--;
- lz++;
- //lz
- vector<int> v1,v2;
- for(int i=lz-1;i<l;i++)
- v1.push_back(a[i]);
- for(int i=0;i<a.size()-v1.size();i++)
- v2.push_back(0);
- for(int i=0;i<lz-1;i++)
- v2.push_back(a[i]);
- int rem=0;
- for(int i=v1.size()-1;i>=0;i--){
- anslz.push_back((v1[i]+v2[i]+rem)%10);
- if((v1[i]+v2[i]+rem)>=10)
- rem=1;
- else
- rem=0;
- }
- if(rem)
- anslz.push_back(1);
- //rz
- v1.resize(0);v2.resize(0);
- for(int i=0;i<=rz;i++)
- v1.push_back(a[i]);
- for(int i=0;i<a.size()-(a.size()-v1.size())-(a.size()-v1.size());i++)
- v2.push_back(0);
- for(int i=rz+1;i<l;i++)
- v2.push_back(a[i]);
- rem=0;
- for(int i=v1.size()-1;i>=0;i--){
- ansrz.push_back((v1[i]+v2[i]+rem)%10);
- if((v1[i]+v2[i]+rem)>=10)
- rem=1;
- else
- rem=0;
- }
- if(rem)
- ansrz.push_back(1);
- // for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
- // cout<<*i;
- // cout<<"\nAHAHAHAH\n";
- // for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
- // cout<<*i;
- // cout<<"\nAHAHAHAH\n"
- // for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
- // cout<<*i;
- // cout<<"\n";
- // for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
- // cout<<*i;
- if(compp(ansrz, anslz)){
- ans=ansrz;
- for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
- cout<<*i;
- }
- else{
- for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
- cout<<*i;
- }
- return 0;
- //comp suml, sumr
- //print min
- }
- if(compp(ansrz, anslz)){
- ans=ansrz;
- for(auto i=ansrz.rbegin(); i!=ansrz.rend();i++)
- cout<<*i;
- }
- else{
- for(auto i=anslz.rbegin(); i!=anslz.rend();i++)
- cout<<*i;
- }
- return 0;
- }
- }
- /*12
- 874840000012*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement