Submission #5538055


Source Code Expand

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

const int N = 205;
const int INF = 1e9;

struct Edge {
   int v,cap,rev;
   Edge(int v,int cap,int rev) : v(v),cap(cap),rev(rev) {
   }
};

vector<Edge> vt[N];

void addEdge(int u,int v,int cap) {
   vt[u].push_back(Edge(v,cap,vt[v].size()));
   vt[v].push_back(Edge(u,0,vt[u].size()-1));
}

int level[N];

bool bfs(int s,int t) {
   memset(level,-1,sizeof(level));
   level[s] = 0;
   queue<int> q;
   q.push(s);
   while(!q.empty()) {
      int node = q.front();
      q.pop();
      for(int i=0;i<vt[node].size();++i) {
         int there = vt[node][i].v;
         int cap = vt[node][i].cap;
         if(level[there]==-1 && cap>0) {
            level[there] = level[node] + 1;
            q.push(there);
         }
      }
   }
   return level[t]!=-1;
}
int work[N];
int dfs(int here,int minCap,int t) {
   if(here==t) {
      return minCap;
   }
   for(int &i = work[here];i< vt[here].size();++i) {
      int there = vt[here][i].v;
      int cap = vt[here][i].cap;
      if(level[there] == level[here]+1 && cap>0) {
         int c = dfs(there,min(minCap,cap),t);
         if(c>0) {
            int rid = vt[here][i].rev;
            vt[here][i].cap -= c;
            vt[there][rid].cap += c;
            return c;
         }
      }
   }
   return 0;
}
ll findMinCut(int s,int t) {
   ll ret= 0;
   while(bfs(s,t)) {
      memset(work,0,sizeof(work));
      while(true) {
         int r = dfs(s,INF,t);
         ret += r;
         if(r==0) {
            break;
         }
      }
   }
   return ret;
}

int A[N];

void solve() {
   int n;
   scanf("%d",&n);
   for(int i=1;i<=n;++i) {
      scanf("%d",&A[i]);
   }
   int s = n+1,t = n+2;
   ll ret = 0;
   for(int i=1;i<=n;++i) {
      if(A[i]<=0) {
         addEdge(s,i,-A[i]);
         for(int j = i+i;j<=n;j+=i) {
            addEdge(i,j,INF);
         }
      } else {
         ret += A[i];
         addEdge(i,t,A[i]);
      }
   }
   ret -= findMinCut(s,t);
   printf("%lld\n", ret);
}

int main() {
   //freopen("input.txt","r",stdin);
   solve();
}

Submission Info

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

Compile Error

./Main.cpp: In function ‘void solve()’:
./Main.cpp:81:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d",&n);
                  ^
./Main.cpp:83:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
       scanf("%d",&A[i]);
                        ^

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