# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1140258 | SmuggingSpun | Remittance (JOI19_remittance) | C++20 | 14 ms | 1488 KiB |
#include<bits/stdc++.h>
#define taskname "B"
using namespace std;
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 sub23{
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{
sub23::solve();
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |