Submission #3450739
Source Code Expand
#include <bits/stdc++.h> using namespace std; #define INF 100000000 #define YJ 1145141919 #define INF_INT_MAX 2147483647 #define INF_LL 9223372036854775 #define INF_LL_MAX 9223372036854775807 #define EPS 1e-10 #define MOD 1000000007 #define Pi acos(-1) #define LL long long #define ULL unsigned long long #define LD long double #define int long long #define FOR(i,a,b) for(int i=(a);i<(b);++i) #define REP(i,n) FOR(i,0,n) #define ALL(a) begin((a)), end((a)) #define RALL(a) (a).rbegin(), (a).rend() #define PB push_back #define MP make_pair #define SZ(a) int((a).size()) const int MAX_N = 105; int N; int A[MAX_N]; class Dinic{ public: Dinic(int v) : MAX_V(v) { init(); G.resize(v); level.resize(v); iter.resize(v); } void init() { G.clear(); level.clear(); iter.clear(); } void addEdge(LL from, LL to, LL cap) { G[from].push_back(edge(to, cap, G[to].size())); G[to].push_back(edge(from, 0, G[from].size()-1)); } void bfs(LL s) { fill(begin(level), end(level), -1); queue<LL> que; level[s] = 0; que.push(s); while(!que.empty()){ LL v = que.front(); que.pop(); for(LL i = 0; i < G[v].size(); i++) { edge &e = G[v][i]; if(e.cap > 0 && level[e.to] < 0) { level[e.to] = level[v]+1; que.push(e.to); } } } } LL dfs(LL v, LL t, LL f) { if(v==t) return f; for(LL &i = iter[v]; i < G[v].size(); i++) { edge &e = G[v][i]; if(e.cap > 0 && level[v] < level[e.to]) { LL 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; } LL maxFlow(LL s, LL t) { LL flow = 0; while(true) { bfs(s); if(level[t] < 0) { return flow; } fill(begin(iter), end(iter), 0); LL f; while((f = dfs(s, t, INF)) > 0) { flow += f; } } } private: int MAX_V; struct edge { LL to, cap, rev; edge(LL to, LL cap, LL rev) : to(to), cap(cap), rev(rev) {} }; vector<vector<edge>> G; vector<LL> level; vector<LL> iter; }; signed main() { cin >> N; REP(i,N) { cin >> A[i]; } int ans = 0; Dinic dinic(N+5); REP(i,N) { if(A[i] >= 0) { ans += A[i]; dinic.addEdge(i,N+1,A[i]); } else { dinic.addEdge(N,i,-A[i]); } } FOR(i,1,N+1) { for(int j = 2; i*j <= N; j++) { dinic.addEdge(i-1,i*j-1,INF_LL); } } cout << ans - dinic.maxFlow(N,N+1) << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | E - MUL |
User | takoshi |
Language | C++14 (GCC 5.4.1) |
Score | 700 |
Code Size | 2871 Byte |
Status | AC |
Exec Time | 2 ms |
Memory | 384 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 700 / 700 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example_0, example_1, example_2, example_3 |
All | example_0, example_1, example_2, example_3, kimeuti_0, kimeuti_1, kimeuti_10, kimeuti_11, kimeuti_12, kimeuti_13, kimeuti_14, kimeuti_15, kimeuti_16, kimeuti_17, kimeuti_18, kimeuti_19, kimeuti_2, kimeuti_3, kimeuti_4, kimeuti_5, kimeuti_6, kimeuti_7, kimeuti_8, kimeuti_9, rand_0, rand_1, rand_10, rand_11, rand_12, rand_13, rand_14, rand_15, rand_16, rand_17, rand_18, rand_19, rand_2, rand_3, rand_4, rand_5, rand_6, rand_7, rand_8, rand_9, small_0, small_1, small_2, small_3, small_4 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
example_0 | AC | 1 ms | 256 KB |
example_1 | AC | 1 ms | 256 KB |
example_2 | AC | 1 ms | 256 KB |
example_3 | AC | 1 ms | 256 KB |
kimeuti_0 | AC | 1 ms | 256 KB |
kimeuti_1 | AC | 1 ms | 256 KB |
kimeuti_10 | AC | 1 ms | 256 KB |
kimeuti_11 | AC | 1 ms | 256 KB |
kimeuti_12 | AC | 1 ms | 256 KB |
kimeuti_13 | AC | 1 ms | 256 KB |
kimeuti_14 | AC | 1 ms | 256 KB |
kimeuti_15 | AC | 1 ms | 256 KB |
kimeuti_16 | AC | 1 ms | 256 KB |
kimeuti_17 | AC | 1 ms | 256 KB |
kimeuti_18 | AC | 1 ms | 256 KB |
kimeuti_19 | AC | 1 ms | 256 KB |
kimeuti_2 | AC | 2 ms | 384 KB |
kimeuti_3 | AC | 1 ms | 256 KB |
kimeuti_4 | AC | 1 ms | 256 KB |
kimeuti_5 | AC | 1 ms | 256 KB |
kimeuti_6 | AC | 1 ms | 256 KB |
kimeuti_7 | AC | 1 ms | 256 KB |
kimeuti_8 | AC | 1 ms | 256 KB |
kimeuti_9 | AC | 1 ms | 256 KB |
rand_0 | AC | 1 ms | 256 KB |
rand_1 | AC | 1 ms | 256 KB |
rand_10 | AC | 1 ms | 256 KB |
rand_11 | AC | 1 ms | 256 KB |
rand_12 | AC | 1 ms | 256 KB |
rand_13 | AC | 1 ms | 256 KB |
rand_14 | AC | 1 ms | 256 KB |
rand_15 | AC | 1 ms | 256 KB |
rand_16 | AC | 1 ms | 256 KB |
rand_17 | AC | 1 ms | 256 KB |
rand_18 | AC | 1 ms | 256 KB |
rand_19 | AC | 1 ms | 256 KB |
rand_2 | AC | 1 ms | 256 KB |
rand_3 | AC | 1 ms | 256 KB |
rand_4 | AC | 1 ms | 256 KB |
rand_5 | AC | 1 ms | 256 KB |
rand_6 | AC | 1 ms | 256 KB |
rand_7 | AC | 1 ms | 256 KB |
rand_8 | AC | 1 ms | 256 KB |
rand_9 | AC | 1 ms | 256 KB |
small_0 | AC | 1 ms | 256 KB |
small_1 | AC | 1 ms | 256 KB |
small_2 | AC | 1 ms | 256 KB |
small_3 | AC | 1 ms | 256 KB |
small_4 | AC | 1 ms | 256 KB |