Submission #797210

#TimeUsernameProblemLanguageResultExecution timeMemory
797210NothingXDTriple Jump (JOI19_jumps)C++17
0 / 100
19 ms2264 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef double ld; typedef complex<ld> point; void debug_out(){cerr << endl;} template<typename Head, typename... Tail> void debug_out(Head H, Tail... T){ cerr << H << ' '; debug_out(T...); } #define debug(...) cerr << "(" << #__VA_ARGS__ << "): ", debug_out(__VA_ARGS__) #define F first #define S second #define all(x) x.begin(), x.end() #define MP(x, y) make_pair(x, y) const int maxn = 1e6 + 10; ll n, a[maxn], b[maxn]; vector<int> q; bool mark[maxn]; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin >> n; for (int i = 1; i <= n; i++){ cin >> a[i] >> b[i]; if (a[i] > b[i]+1){ q.push_back(i); mark[i] = true; } } while(!q.empty()){ int v = q.back(); mark[v] = false; q.pop_back(); ll tmp = (a[v]-b[v]) / 2; int nxt = v+1; if (nxt == n+1) nxt = 1; a[nxt] += tmp; a[v] -= 2 * tmp; if (!mark[nxt] && a[nxt] > b[nxt]+1){ q.push_back(nxt); mark[nxt] = true; } } bool ans = true; for (int i = 1; i <= n; i++){ assert(a[i] <= b[i]+1); if (a[i] != b[i]) ans = false; } bool majid = true; for (int i = 1; i <= n; i++){ if (a[i] != b[i]+1) majid = false; } bool asghar = false; for (int i = 1; i <= n; i++){ if (a[i] != 1) asghar = true; } cout << ((ans || (majid && asghar))? "Yes\n": "No\n"); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...