제출 #1302016

#제출 시각아이디문제언어결과실행 시간메모리
1302016Tymond송금 (JOI19_remittance)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define fi first
#define se second

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    
    int n;
    cin >> n;
    vector<pair<ll, ll>> a(n);
    vector<bool> on_queue(n, false);
    
    queue<int> q;
    for(int i = 0; i < n; i++){
        cin >> a[i].fi >> a[i].se;
        if(a[i].fi > a[i].se){
            q.push(i);
            on_queue[i] = true;
        }
    }
    
    while(q.size()){
        int v = q.front();
        q.pop();
        on_queue[v] = false;
        
        int nxt = (v == n - 1 ? 0 : v + 1);
        if(a[v].fi > 1){
            int dod = (a[v].fi - a[v].se) / 2;
            a[v].fi -= (2 * dod);
            a[nxt].fi += dod;
            if(a[nxt].fi > a[nxt].se + 1 && on_queue[nxt] == false){
                on_queue[nxt] = true;
                q.push(nxt);
            }
        }
    }
    
    bool all1 = true;
    bool isNone1 = false;
    for(int i = 0; i < n; i++){
        if(a[i].fi - a[i].se != 1){
            all1 = false;
        }
        
        if(a[i].fi != 1){
            isNone1 = true;
        }
    }
    
    if(all1 && isNone1){
        cout << "TAK\n";
        return 0;
    }
    
    bool ok = true;
    for(int i = 0; i < n; i++){
        if(a[i].fi != a[i].se){
            ok = false;
        }
    }
    
    if(ok){
        cout << "TAK\n";
    }else{
        cout << "NIE\n";
    }
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...