Submission #110295


Source Code Expand

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>

#define FOR(i, a, n) for(int i = (a); i < (n); i++)
#define REP(i, n) FOR(i, 0, n)

using namespace std;

const int MAX_H = 110;
const int MAX_W = 110;
const int MAX_N = MAX_H + MAX_W;

int h, w, n;
int u[MAX_H][MAX_W];
int f[MAX_W];
int s[MAX_H];

vector<int> g[MAX_N];
bool used[MAX_N];
int match[MAX_N];

bool check(){
  vector< vector<int> > t(h, vector<int>(w));
  REP(i, h) REP(j, w){
    if(u[i][j]){
      t[i][j] = min(s[i], f[j]);
    }else{
      t[i][j] = 0;
    }
  }
  REP(i, w){
    int tf = 0;
    REP(j, h){
      tf = max(tf, t[j][i]);
    }
    if(tf != f[i]) return false;
  }
  REP(i, h){
    int ts = 0;
    REP(j, w){
      ts = max(ts, t[i][j]);
    }
    if(ts != s[i]) return false;
  }
  return true;
}

bool dfs(int v){
  used[v] = true;
  REP(i, (int)g[v].size()){
    int u = g[v][i], w = match[u];
    if(w == -1 || (!used[w] && dfs(w))){
      match[v] = u;
      match[u] = v;
      return true;
    }
  }
  return false;
}

int bipartite_matching(){
  int r = 0;
  memset(match, -1, sizeof(match));
  REP(i, n){
    if(match[i] == -1){
      memset(used, false, sizeof(used));
      if(dfs(i)) r++;
    }
  }
  return r;
}


int solve(){
  if(!check()) return -1;
  REP(i, h) REP(j, w){
    if(u[i][j] && s[i] == f[j]){
      g[i].push_back(h + j);
      g[h + j].push_back(i);
    }
  }
  bipartite_matching();
  int r = 0, ct = 0;
  REP(i, h) if(s[i]){
    r += s[i];
    ct++;
  }
  REP(i, w) if(f[i] && match[h + i] == -1){
    r += f[i];
    ct++;
  }
  REP(i, h) REP(j, w){
    r += u[i][j];
  }
  return r - ct;
}

int main(){
  cin >> h >> w;
  n = h + w;
  REP(i, n) g[i].clear();
  REP(i, h) REP(j, w) cin >> u[i][j];
  REP(i, w) cin >> f[i];
  REP(i, h) cin >> s[i];
  cout << solve() << endl;
}

Submission Info

Submission Time
Task A - Anime Master
User torimal
Language C++ (GCC 4.4.7)
Score 0
Code Size 1928 Byte
Status WA
Exec Time 255 ms
Memory 928 KB

Judge Result

Set Name All
Score / Max Score 0 / 100
Status
AC × 1
WA × 56
RE × 32
Set Name Test Cases
All 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 4, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 5, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 6, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 7, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 8, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 9
Case Name Status Exec Time Memory
1 WA 22 ms 924 KB
10 WA 22 ms 928 KB
11 WA 22 ms 924 KB
12 WA 21 ms 928 KB
13 WA 22 ms 848 KB
14 WA 22 ms 924 KB
15 WA 22 ms 928 KB
16 WA 22 ms 920 KB
17 WA 22 ms 924 KB
18 WA 22 ms 844 KB
19 WA 21 ms 924 KB
2 WA 22 ms 920 KB
20 WA 20 ms 924 KB
21 WA 20 ms 920 KB
22 WA 20 ms 792 KB
23 WA 19 ms 924 KB
24 WA 19 ms 924 KB
25 WA 23 ms 800 KB
26 WA 23 ms 796 KB
27 WA 21 ms 928 KB
28 WA 22 ms 928 KB
29 WA 22 ms 928 KB
3 WA 21 ms 924 KB
30 WA 23 ms 796 KB
31 WA 21 ms 920 KB
32 WA 21 ms 800 KB
33 WA 21 ms 924 KB
34 WA 21 ms 924 KB
35 WA 22 ms 812 KB
36 WA 21 ms 920 KB
37 WA 22 ms 924 KB
38 WA 21 ms 924 KB
39 WA 23 ms 788 KB
4 AC 22 ms 924 KB
40 WA 21 ms 820 KB
41 WA 21 ms 920 KB
42 WA 22 ms 924 KB
43 WA 23 ms 800 KB
44 WA 21 ms 800 KB
45 WA 22 ms 924 KB
46 WA 21 ms 928 KB
47 WA 22 ms 912 KB
48 WA 21 ms 788 KB
49 WA 21 ms 924 KB
5 WA 23 ms 796 KB
50 WA 23 ms 796 KB
51 WA 22 ms 928 KB
52 WA 21 ms 928 KB
53 WA 23 ms 788 KB
54 WA 19 ms 924 KB
55 WA 19 ms 928 KB
56 WA 20 ms 920 KB
57 WA 21 ms 924 KB
58 RE 233 ms 800 KB
59 RE 232 ms 796 KB
6 WA 21 ms 920 KB
60 RE 236 ms 792 KB
61 RE 233 ms 792 KB
62 RE 233 ms 796 KB
63 RE 240 ms 800 KB
64 RE 231 ms 800 KB
65 RE 234 ms 796 KB
66 RE 234 ms 796 KB
67 RE 246 ms 796 KB
68 RE 234 ms 796 KB
69 RE 231 ms 788 KB
7 WA 21 ms 924 KB
70 RE 230 ms 792 KB
71 RE 240 ms 800 KB
72 RE 235 ms 800 KB
73 RE 236 ms 796 KB
74 RE 235 ms 796 KB
75 RE 233 ms 800 KB
76 RE 233 ms 800 KB
77 RE 234 ms 796 KB
78 RE 250 ms 792 KB
79 RE 255 ms 816 KB
8 WA 22 ms 724 KB
80 RE 253 ms 820 KB
81 RE 233 ms 916 KB
82 RE 232 ms 800 KB
83 RE 232 ms 796 KB
84 RE 250 ms 800 KB
85 RE 231 ms 800 KB
86 RE 230 ms 796 KB
87 RE 239 ms 800 KB
88 RE 231 ms 796 KB
89 RE 237 ms 800 KB
9 WA 21 ms 924 KB