Submission #2671762


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 100 + 10;
const int M = 1000000007;
const double eps = 1e-9;
const double PI = acos(-1);
const ll oo = 10000000000000000;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int, ll> ii;
#define pb push_back 
#define all(c) (c).begin(),(c).end()
int n,v[N],level[N],vis[N],vs;
vi g[N];
vector<ii> E;
bool bfs(){
	vis[0]=++vs;
	queue<int> q;
	q.push(0);
	while(!q.empty()){
		int u=q.front();
		q.pop();
		for(int i=0; i<g[u].size(); ++i){
			int e=g[u][i];
			int d=E[e].first;
			ll c=E[e].second;
			if(!c || vis[d]==vs)continue;
			vis[d]=vs;
			level[d]=level[u]+1;
			q.push(d);
		}
	}
	return vis[101]==vs;
}
int adj[N];
ll dfs(int u, ll fl){
	if(u==101)
		return fl;
	for(int &i=adj[u]; i<g[u].size(); ++i){
		int e=g[u][i];
		int d=E[e].first;
		ll c=E[e].second;
		if(c && level[d]==level[u]+1){
			ll cc=dfs(d, min(fl, (ll)c));
			if(cc){
				E[e].second-=cc;
				E[e^1].second+=cc;
				return cc;
			}
		}
	}
	return 0;
}
ll dinic(){
	ll flow=0;
	while(bfs()){
		memset(adj, 0, sizeof(adj));
		while(ll cc=dfs(0, oo))
			flow+=cc;
	}
	return flow;
}
void addEdge(int a, int b, ll c){
	g[a].pb(E.size());
	E.pb(ii(b,c));
	g[b].pb(E.size());
	E.pb(ii(a,0));
}
int main(){
	cin>>n;
	for(int i=1; i<=n; ++i){
		cin>>v[i];
		v[i]*=-1;
	}
	for(int i=1; i<=n; ++i)
		for(int j=i+i; j<=n; j+=i)
			addEdge(i,j,oo);
	ll allpos=0;
	for(int i=1; i<=n; ++i)
		if(v[i]>=0)
			addEdge(0,i,v[i]);
		else
			addEdge(i,101,-v[i]),allpos-=v[i];
	cout<<allpos-dinic()<<endl;
	return 0;
}

Submission Info

Submission Time
Task E - MUL
User Rezira
Language C++14 (GCC 5.4.1)
Score 700
Code Size 1656 Byte
Status AC
Exec Time 1 ms
Memory 256 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 4
AC × 49
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 1 ms 256 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