Submission #1346749


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#define repl(i,a,b) for(int i=(int)(a);i<(int)(b);i++)
#define rep(i,n) repl(i,0,n)
#define mp(a,b) make_pair((a),(b))
#define pb(a) push_back((a))
#define all(x) (x).begin(),(x).end()
#define uniq(x) sort(all(x)),(x).erase(unique(all(x)),end(x))
#define fi first
#define se second
#define dbg(x) cout<<#x" = "<<((x))<<endl
template<class T,class U> ostream& operator<<(ostream& o, const pair<T,U> &p){o<<"("<<p.fi<<","<<p.se<<")";return o;}
template<class T> ostream& operator<<(ostream& o, const vector<T> &v){o<<"[";for(T t:v){o<<t<<",";}o<<"]";return o;}

#define INF 21474836

template<typename T>
class MinCostFlow{
private:
  struct edge{int to; T cap, cost; int rev;};
  using P = pair<int,int>;
  vector<vector<edge> > Graph;
  vector<int> prevv, preve;
  vector<T> h, d; // ポテンシャル,最短距離
public:
  MinCostFlow(int v){
    // 頂点数vで初期化
    Graph.resize(v);
    prevv.resize(v);
    preve.resize(v);
    h.resize(v);
    d.resize(v);
  }
  T min_cost_flow(int s, int t, T f){
    T res = 0;
    fill(all(h), 0);
    rep(v,Graph.size()){
  		rep(j,Graph[v].size()){
  			edge &e = Graph[v][j];
  			if(e.cap==0) continue;
  			int u = e.to;
  			h[u] = min(h[u],h[v]+e.cost);
  		}
  	}
    while(f>0){
      priority_queue<P, vector<P>, greater<P>> pq;
      fill(all(d), INF);
      d[s] = 0;
      pq.push(mp(0,s));
      while(!pq.empty()){
        auto p = pq.top(); pq.pop();
        int v = p.se;
        if(d[v] < p.fi) continue;
        rep(i,Graph[v].size()){
          edge &e = Graph[v][i];
          if(e.cap > 0 && d[e.to] > d[v] + e.cost + h[v] - h[e.to]){
            d[e.to] = d[v] + e.cost + h[v] - h[e.to];
            prevv[e.to] = v;
            preve[e.to] = i;
            pq.push(mp(d[e.to], e.to));
          }
        }
      }
      if(d[t] == INF) return 0;
      rep(i,Graph.size()) h[i] += d[i];

      T nf = f;
      for(int v=t; v!=s; v = prevv[v]){
        nf = min(nf, Graph[prevv[v]][preve[v]].cap);
      }
      f -= nf;
      res += nf * h[t];
      for(int v=t; v!=s; v=prevv[v]){
        edge &e = Graph[prevv[v]][preve[v]];
        e.cap -= nf;
        Graph[v][e.rev].cap += nf;
      }
    }
    return res;
  }
  void add_edge(int from ,int to, T cap, T cost){
    Graph[from].pb(((edge){to, cap, cost, (int)Graph[to].size()}));
    Graph[to].pb(((edge){from, 0, -cost, (int)Graph[from].size()-1}));
  }
};

int main(){
  int n,m;
  cin>>m;
  vector<int> sx(m),sy(m);
  rep(i,m) cin>>sx[i]>>sy[i];
  cin>>n;
  vector<int> x(n),y(n),s(n),t(n);
  rep(i,n) cin>>x[i]>>y[i]>>s[i]>>t[i];

  MinCostFlow<int> flow(2*n+m+2);
  // s:2*n+m t:2*n+m+1

  rep(i,m) flow.add_edge(2*n+m, 2*n+i, 1, 0);
  rep(i,m) flow.add_edge(2*n+i, 2*n+m+1, 1, 0);

  rep(i,m)rep(j,n){
    int d = abs(sx[i]-x[j]) + abs(sy[i]-y[j]);
    if(d <= s[j]) flow.add_edge(2*n+i, 2*j, 1, 0);
  }

  rep(i,n) repl(j,i+1,n){
    int d = abs(x[i]-x[j]) + abs(y[i]-y[j]);
    if(d <= s[j]-t[i]) flow.add_edge(2*i+1, 2*j, 1, 0);
  }

  rep(i,n) flow.add_edge(2*i, 2*i+1, 1, -1);
  rep(i,n) flow.add_edge(2*i+1, 2*n+m+1, 1, 0);

  int res = flow.min_cost_flow(2*n+m, 2*n+m+1, m);

  if(res == -n) cout << "YES" << endl;
  else cout << "NO" << endl;

  return 0;
}

Submission Info

Submission Time
Task D - ラボライブ タフグローバルフェスティバル
User tossy
Language C++14 (GCC 5.4.1)
Score 200
Code Size 3373 Byte
Status AC
Exec Time 121 ms
Memory 26372 KB

Judge Result

Set Name All
Score / Max Score 200 / 200
Status
AC × 54
Set Name Test Cases
All scrambled_00.txt, scrambled_01.txt, scrambled_02.txt, scrambled_03.txt, scrambled_04.txt, scrambled_05.txt, scrambled_06.txt, scrambled_07.txt, scrambled_08.txt, scrambled_09.txt, scrambled_10.txt, scrambled_11.txt, scrambled_12.txt, scrambled_13.txt, scrambled_14.txt, scrambled_15.txt, scrambled_16.txt, scrambled_17.txt, scrambled_18.txt, scrambled_19.txt, scrambled_20.txt, scrambled_21.txt, scrambled_22.txt, scrambled_23.txt, scrambled_24.txt, scrambled_25.txt, scrambled_26.txt, scrambled_27.txt, scrambled_28.txt, scrambled_29.txt, scrambled_30.txt, scrambled_31.txt, scrambled_32.txt, scrambled_33.txt, scrambled_34.txt, scrambled_35.txt, scrambled_36.txt, scrambled_37.txt, scrambled_38.txt, scrambled_39.txt, scrambled_40.txt, scrambled_41.txt, scrambled_42.txt, scrambled_43.txt, scrambled_44.txt, scrambled_45.txt, scrambled_46.txt, scrambled_47.txt, scrambled_48.txt, scrambled_49.txt, scrambled_50.txt, scrambled_51.txt, scrambled_52.txt, scrambled_53.txt
Case Name Status Exec Time Memory
scrambled_00.txt AC 1 ms 256 KB
scrambled_01.txt AC 6 ms 256 KB
scrambled_02.txt AC 1 ms 256 KB
scrambled_03.txt AC 116 ms 24676 KB
scrambled_04.txt AC 114 ms 25184 KB
scrambled_05.txt AC 114 ms 24804 KB
scrambled_06.txt AC 121 ms 25732 KB
scrambled_07.txt AC 119 ms 26372 KB
scrambled_08.txt AC 1 ms 256 KB
scrambled_09.txt AC 1 ms 256 KB
scrambled_10.txt AC 1 ms 256 KB
scrambled_11.txt AC 1 ms 256 KB
scrambled_12.txt AC 1 ms 256 KB
scrambled_13.txt AC 1 ms 384 KB
scrambled_14.txt AC 1 ms 256 KB
scrambled_15.txt AC 1 ms 256 KB
scrambled_16.txt AC 1 ms 256 KB
scrambled_17.txt AC 1 ms 256 KB
scrambled_18.txt AC 1 ms 256 KB
scrambled_19.txt AC 1 ms 256 KB
scrambled_20.txt AC 2 ms 384 KB
scrambled_21.txt AC 1 ms 256 KB
scrambled_22.txt AC 1 ms 256 KB
scrambled_23.txt AC 18 ms 9360 KB
scrambled_24.txt AC 7 ms 2560 KB
scrambled_25.txt AC 52 ms 16396 KB
scrambled_26.txt AC 9 ms 3456 KB
scrambled_27.txt AC 9 ms 2828 KB
scrambled_28.txt AC 12 ms 5828 KB
scrambled_29.txt AC 20 ms 9528 KB
scrambled_30.txt AC 9 ms 5632 KB
scrambled_31.txt AC 23 ms 11296 KB
scrambled_32.txt AC 7 ms 3968 KB
scrambled_33.txt AC 10 ms 4608 KB
scrambled_34.txt AC 3 ms 1152 KB
scrambled_35.txt AC 8 ms 3968 KB
scrambled_36.txt AC 6 ms 2304 KB
scrambled_37.txt AC 2 ms 384 KB
scrambled_38.txt AC 1 ms 256 KB
scrambled_39.txt AC 1 ms 256 KB
scrambled_40.txt AC 1 ms 256 KB
scrambled_41.txt AC 1 ms 256 KB
scrambled_42.txt AC 1 ms 256 KB
scrambled_43.txt AC 1 ms 256 KB
scrambled_44.txt AC 1 ms 256 KB
scrambled_45.txt AC 1 ms 256 KB
scrambled_46.txt AC 1 ms 256 KB
scrambled_47.txt AC 1 ms 256 KB
scrambled_48.txt AC 1 ms 256 KB
scrambled_49.txt AC 1 ms 256 KB
scrambled_50.txt AC 1 ms 256 KB
scrambled_51.txt AC 1 ms 256 KB
scrambled_52.txt AC 35 ms 18048 KB
scrambled_53.txt AC 1 ms 256 KB