제출 #1351242

#제출 시각아이디문제언어결과실행 시간메모리
1351242top1svtinStranded Far From Home (BOI22_island)C++17
0 / 100
2 ms4932 KiB
#include <bits/stdc++.h>

#define kien long long
#define FOR(i, a, b) for (int i = a;i <= b; i++)
#define FORD(i, a, b) for (int i = a;i >= b; i--)
#define task "a"
#define fin(x) freopen(x".inp","r",stdin)
#define fou(x) freopen(x".out","w",stdout)
#define pb push_back

using namespace std;
const int mxn = 2e5 + 5;
kien n, m, a[mxn], sum[mxn];
kien par[mxn], ans[mxn];
vector <int> dp[mxn];
map <kien, vector <kien>> pp;
map <kien, vector <kien>> ver;

int find_set (int u) {
    return par[u] == u ? u : par[u] = find_set(par[u]);
}

void union_set (int u, int v) {
    u = find_set(u); v = find_set(v);
    if (u == v) return;
    sum[u] += sum[v];
    par[v] = u;
}

int get (int u) {
    u = find_set(u); return sum[u];
}

main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    if (fopen(task".inp", "r")) {
        fin(task); fou(task);
    }
    cin >> n >> m;
    FOR (i, 1, n) { cin >> a[i]; pp[a[i]].pb(i); ver[a[i]].pb(i); sum[i] = a[i]; ans[i] = 1; }
    FOR (i, 1, m) {
        int u, v;
        cin >> u >> v;
        dp[u].pb(v); dp[v].pb(u);
    }

    for (auto i : pp) {
        for (auto u : ver[i.first]) {
            for (auto v : dp[u]) {
                /// ta có thể rút gọn a[u] <= a[v] vì u luôn thuộc ver[i.first] tức là u luôn == i.first
                if (a[u] <= a[v]) union_set(u, v);
            }
        }

        for (auto x : i.second) {
            kien tong = get(x);
            if (tong >= i.first) {
                pp[tong].pb(x);
            }
            else if (tong != n) {
                ans[x] = 0;
            }
        }
    }

    FOR (i, 1, n) cout << ans[i];
}

컴파일 시 표준 에러 (stderr) 메시지

island.cpp:34:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   34 | main() {
      | ^~~~
island.cpp: In function 'int main()':
island.cpp:7:23: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    7 | #define fin(x) freopen(x".inp","r",stdin)
      |                ~~~~~~~^~~~~~~~~~~~~~~~~~~
island.cpp:38:9: note: in expansion of macro 'fin'
   38 |         fin(task); fou(task);
      |         ^~~
island.cpp:8:23: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    8 | #define fou(x) freopen(x".out","w",stdout)
      |                ~~~~~~~^~~~~~~~~~~~~~~~~~~~
island.cpp:38:20: note: in expansion of macro 'fou'
   38 |         fin(task); fou(task);
      |                    ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...