Submission #6000800


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

struct Dinic{
    struct edge {
        int64_t to, cap, rev;
        edge(int64_t to, int64_t cap, int64_t rev):to(to), cap(cap), rev(rev){}
    };

    int N, S, T;
    int64_t flow = 0;
    const int64_t INF = 1e18;
    vector<int> level, iter;
    vector<vector<edge>> G;

    Dinic(int N, int S, int T):N(N), S(S), T(T){
        flow = 0;
        level.resize(N);
        iter.resize(N);
        G.resize(N);
    }

    void add_edge(int from, int to, int64_t cap){
        G[from].emplace_back(to, cap, G[to].size());
        G[to].emplace_back(from, 0, G[from].size()-1);
    }

    void bfs(int s){
        fill(level.begin(), level.end(), -1);
        queue<int> que;
        level[s] = 0;
        que.push(s);
        while(que.size()){
            int v = que.front(); que.pop();
            for(auto& e : G[v]){
                if(e.cap > 0 && level[e.to] < 0){
                    level[e.to] = level[v] + 1;
                    que.push(e.to);
                }
            }
        }
    }

    int64_t dfs(int v, int t, int64_t f){
        if(v == t) return f;
        for(int& i=iter[v]; i<G[v].size(); i++){
            auto& e = G[v][i];
            if(e.cap > 0 && level[v] < level[e.to]){
                int64_t d = dfs(e.to, t, min(f, e.cap));
                if(d > 0){
                    e.cap -= d;
                    G[e.to][e.rev].cap += d;
                    return d;
                }
            }
        }
        return 0;
    }

    int64_t max_flow(){
        while(true){
            bfs(S);
            if(level[T] < 0) return flow;
            fill(iter.begin(), iter.end(), 0);
            while(true){
                int64_t f = dfs(S, T, INF);
                if(f == 0) break;
                flow += f;
            }
        }
    }
};

int main(){
    int N, M[300], X[300];
    cin >> N;
    for(int i=0; i<N; i++) cin >> M[i] >> X[i];

    int64_t fix = 0;
    int S = 300, T = 301;
    Dinic solver(T+1, S, T);
    for(int i=0; i<N; i++){
        if(X[i] > 0){
            fix += X[i];
            solver.add_edge(S, i, 0);
            solver.add_edge(i, T, X[i]);
        }else{
            solver.add_edge(S, i, -X[i]);
            solver.add_edge(i, T, 0);
        }
    }

    const int64_t INF = 1e15;
    for(int i=0; i<N; i++) for(int j=0; j<N; j++){
        if(i != j && M[i] % M[j] == 0){
            solver.add_edge(j, i, INF);
        }
    }

    int64_t ans = fix - solver.max_flow();
    cout << ans << endl;
}

Submission Info

Submission Time
Task H - Akashic Records
User betrue12
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2628 Byte
Status WA
Exec Time 2 ms
Memory 384 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 100
Status
AC × 3
AC × 7
WA × 56
Set Name Test Cases
Sample a01, a02, a03
All a01, a02, a03, b04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49, b50, b51, b52, b53, b54, b55, b56, b57, b58, b59, b60, b61, b62, b63
Case Name Status Exec Time Memory
a01 AC 1 ms 256 KB
a02 AC 1 ms 256 KB
a03 AC 1 ms 256 KB
b04 AC 1 ms 256 KB
b05 AC 2 ms 384 KB
b06 AC 2 ms 384 KB
b07 WA 1 ms 256 KB
b08 WA 2 ms 384 KB
b09 AC 1 ms 256 KB
b10 WA 1 ms 256 KB
b11 WA 1 ms 256 KB
b12 WA 1 ms 256 KB
b13 WA 1 ms 256 KB
b14 WA 2 ms 256 KB
b15 WA 2 ms 384 KB
b16 WA 2 ms 384 KB
b17 WA 2 ms 384 KB
b18 WA 2 ms 384 KB
b19 WA 2 ms 384 KB
b20 WA 2 ms 384 KB
b21 WA 2 ms 384 KB
b22 WA 2 ms 384 KB
b23 WA 2 ms 384 KB
b24 WA 2 ms 384 KB
b25 WA 2 ms 384 KB
b26 WA 2 ms 384 KB
b27 WA 2 ms 384 KB
b28 WA 2 ms 384 KB
b29 WA 2 ms 384 KB
b30 WA 2 ms 384 KB
b31 WA 2 ms 384 KB
b32 WA 2 ms 384 KB
b33 WA 2 ms 384 KB
b34 WA 2 ms 384 KB
b35 WA 2 ms 384 KB
b36 WA 2 ms 384 KB
b37 WA 2 ms 384 KB
b38 WA 2 ms 384 KB
b39 WA 2 ms 384 KB
b40 WA 2 ms 384 KB
b41 WA 2 ms 384 KB
b42 WA 2 ms 384 KB
b43 WA 2 ms 384 KB
b44 WA 2 ms 384 KB
b45 WA 2 ms 384 KB
b46 WA 2 ms 384 KB
b47 WA 2 ms 384 KB
b48 WA 2 ms 384 KB
b49 WA 2 ms 384 KB
b50 WA 2 ms 384 KB
b51 WA 2 ms 384 KB
b52 WA 2 ms 384 KB
b53 WA 2 ms 384 KB
b54 WA 2 ms 384 KB
b55 WA 2 ms 384 KB
b56 WA 2 ms 384 KB
b57 WA 2 ms 384 KB
b58 WA 2 ms 384 KB
b59 WA 2 ms 384 KB
b60 WA 2 ms 384 KB
b61 WA 2 ms 384 KB
b62 WA 2 ms 384 KB
b63 WA 2 ms 384 KB