Submission #293667

#TimeUsernameProblemLanguageResultExecution timeMemory
293667Aldas25Remittance (JOI19_remittance)C++14
15 / 100
1097 ms87052 KiB
//#pragma GCC optimize("O3")

#include <bits/stdc++.h>
//#include <ctime>

using namespace std;

#define FAST_IO ios_base::sync_with_stdio(0); cin.tie(nullptr)
#define FOR(i, a, b) for(int i = (a); i <= (b); i++)
#define REP(n) FOR(O, 1, (n))
#define pb push_back
#define f first
#define s second
typedef long double ld;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<int, pii> piii;
typedef vector<int> vi;
typedef vector<pii> vii;
typedef vector<ll> vl;
typedef vector<piii> viii;
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

const int MAXN = 1000100, MAXK = 20;
const ll MOD = 1e9+7;
const ll INF = 1e16;
const ld PI = asin(1) * 2;

void setIO () {
    FAST_IO;
}

void setIO (string s) {
    setIO();
 	freopen((s+".in").c_str(),"r",stdin);
 	freopen((s+".out").c_str(),"w",stdout);
}

int n;
ll a[MAXN], b[MAXN];

map<vi, int> d;

void bfs () {
    queue<vi> q;
    vi st(n);
    FOR(i, 0, n-1) st[i] = a[i];
    d[st] = 1;
    q.push(st);
    while (!q.empty()) {
        st = q.front();
        q.pop();

        //cout << " st: ";
        //for (int x : st) cout << " " << x;
        //cout << "    d = " << d[st] << endl;

        FOR(i, 0, n-1) {
            vi newSt(n);
            FOR(j, 0, n-1) newSt[j] = st[j];
            if (newSt[i] > 1) {
                newSt[i] -= 2;
                newSt[(i+1)%n] ++;
            }
            if (d[newSt] == 0) {
                d[newSt] = d[st] + 1;
                q.push(newSt);
            }
        }
    }
}

int main() {
    setIO();

    cin >> n;
    FOR(i, 0, n-1) cin >> a[i] >> b[i];

    bfs ();
    vi st(n);
    FOR(i, 0, n-1) st[i] = b[i];

    if (d[st] > 0) cout << "Yes\n";
    else cout << "No\n";

	return 0;
}


/*

3
10 7
10 10
10 10
ans: yes

3
3 0
0 0
0 0
ans: no

*/

Compilation message (stderr)

remittance.cpp: In function 'void setIO(std::string)':
remittance.cpp:35:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   35 |   freopen((s+".in").c_str(),"r",stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
remittance.cpp:36:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   36 |   freopen((s+".out").c_str(),"w",stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...