Submission #1140849

#TimeUsernameProblemLanguageResultExecution timeMemory
1140849SmuggingSpunRemittance (JOI19_remittance)C++20
15 / 100
15 ms1488 KiB
#include<bits/stdc++.h>
#define taskname "B"
using namespace std;
typedef long long ll;
const int lim = 1e6 + 5;
int n, a[lim], b[lim];
namespace sub1{
	void solve(){
		vector<vector<int>>state(1);
		int d = 0;
		for(int i = 1; i <= n; i++){
			state[0].emplace_back(a[i]);
			d += a[i] - b[i];
		}
		if(d < 0){
			return void(cout << "No");
		}
		for(int _ = 0; _ < d; _++){
			vector<vector<int>>next_state;
			for(auto& ve : state){
				for(int i = 0; i < n; i++){
					if(ve[i] > 1){
						ve[i] -= 2;
						ve[i == n - 1 ? 0 : i + 1]++;
						next_state.emplace_back(ve);
						ve[i] += 2;
						ve[i == n - 1 ? 0 : i + 1]--;
					}
				}
			}
			swap(state, next_state);
			sort(state.begin(), state.end());
			state.resize(unique(state.begin(), state.end()) - state.begin());
		}
		vector<int>target;
		for(int i = 1; i <= n; i++){
			target.emplace_back(b[i]);
		}
		cout << (binary_search(state.begin(), state.end(), target) ? "Yes" : "No");
	}
}
namespace sub2{
	void solve(){
		ll x = 0;
		for(int i = 1; i <= n; i++){
			x += (1LL << (i - 1)) * (a[i] - b[i]);
		}
		cout << (x % ((1 << n) - 1) == 0 ? "Yes" : "No");
	}
}
namespace sub3{
	void solve(){
		
	}
}
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	if(fopen(taskname".inp", "r")){
		freopen(taskname".inp", "r", stdin);
	}
	cin >> n;
	for(int i = 1; i <= n; i++){
		cin >> a[i] >> b[i];
	}
	if(n <= 7 && max(*max_element(a + 1, a + n + 1), *max_element(b + 1, b + n + 1)) <= 7){
		sub1::solve();
	}
	else if(n <= 20){
		sub2::solve();
	}
	else{
		sub3::solve();
	}
}

Compilation message (stderr)

remittance.cpp: In function 'int main()':
remittance.cpp:59:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   59 |                 freopen(taskname".inp", "r", stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...