This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
    #include <bits/stdc++.h>
    using namespace std;
     
    typedef long long ll;
    typedef vector<int> vi;
    typedef pair<int, int> pi;
    #define pb push_back
    #define mp make_pair
    #define f first
    #define s second
     
    bool is_equal(vector<pi> &a){
        bool equal = true;
        for(auto i : a)
            equal &= (i.f == i.s);
        return equal;
    }
     
    void solve(){
        int n;
        cin >> n;
        vector<pi> a(n);
        for(int i = 0; i < n; i++)
            cin >> a[i].f >> a[i].s;
        for(int i = 0; i < 50; i++){
            if(is_equal(a)){
                cout << "Yes\n";
                return;
            }
            for(int j = 0; j < n; j++){
                int diff = a[j].f - a[j].s;
                int next = (j == n-1 ? 0 : j+1);
                if(diff <= 0)
                    continue;
                if(diff % 2)
                    diff++;
                if(a[j].f < diff)
                    continue;
                a[next].f += diff/2;
                a[j].f -= diff;
            }
            //for(auto i : a)
                //cout << i.f << ' ' << i.s << '\n';
            //cout << '\n' << '\n';
        }
        cout << "No\n";
    }
     
    int main()
    {
        ios::sync_with_stdio(0); cin.tie(0);
        int t = 1;
        //cin >> t;
        while(t--){
            solve();
        }
    }
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |