1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include<bits/stdc++.h>

#define int long long

using namespace std;

signed main(){

cin.tie(0) -> sync_with_stdio(0);

string s,s2,s3;
cin>>s>>s2>>s3;

int l = s.size()-1;

vector<int> co, co2;
int ile = 0;
int czy = 0;


while(l >= 0){
    /// cout<<l<<' ';
    int x = s[l]-'0';
    int y = s2[l]-'0';
    int z = s3[l]-'0';
    if((x+y+czy) % 10 == z){
        if(!czy){
            co.push_back(l);
        }
        if(x+y+czy < 10){
            co2.push_back(l);
        }
        czy = (x+y+czy >= 10 ? 1 : 0);
        l --;
    }
    else{
      ///  cout<<"ZLE : \n";
        int j = 0;
        for(int i=0;i<co.size();i++){
            while(j < co2.size() && co2[j]>co[i]){
                j ++;
            }
            if(j == co2.size()){
                break;
            }
            ile += co2.size()-j;
        }
      ///  cout<<'\n';
        co.clear();
        co2.clear();
        if(!czy){
            l --;
        }
        czy = 0;
    }
}

int j = 0;
for(int i=0;i<co.size();i++){
    while(j < co2.size() && co2[j]>co[i]){
        j ++;
    }
    if(j == co2.size()){
        break;
    }
    ile += co2.size()-j;
}

cout<<ile;

}