Submission #232407

#TimeUsernameProblemLanguageResultExecution timeMemory
232407limabeansRemittance (JOI19_remittance)C++17
0 / 100
578 ms9976 KiB
#include <bits/stdc++.h>
using namespace std;

template<typename T>
void out(T x) { cout << x << endl; exit(0); }
#define watch(x) cout << (#x) << " is " << (x) << endl




typedef long long ll;
const ll mod = 1e9+7;
const int maxn = 10;






vector<int> b;
map<vector<int>,bool> cache;

bool solve(vector<int> a) {

    int n = a.size();
    if (a == b) return true;

    if (cache.count(a)) return cache[a];
    
    for (int i=0; i<n; i++) {
	if (a[i]<=b[i]) continue;

	
	for (int x=0; x<=8; x+=2) {
	    for (int y=0; y<=8; y+=2) {
		if (x>0||y>0) {
		    if (a[i]>=x+y) {
			vector<int> _a = a;
			_a[i]-=x;
			_a[(i+1)%n]+=x/2;
			_a[i]-=y;
			_a[(i-1+n)%n]+=y/2;
			if (solve(_a)) {
			    return cache[a] = true;
			}
		    }
		}
	    }
	}
    }
    return cache[a] = false;
}

int n;
vector<int> _a;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(0);  cout.tie(0);

    cin>>n;
    _a.resize(n);
    b.resize(n);
    
    for (int i=0; i<n; i++) {
	cin>>_a[i]>>b[i];
    }

    if (solve(_a)) out("Yes");
    out("No");

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...