Submission #1727314


Source Code Expand

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

typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll, ll> P;

#define fi first
#define se second
#define repl(i,a,b) for(ll i=(ll)(a);i<(ll)(b);i++)
#define rep(i,n) repl(i,0,n)
#define each(itr,v) for(auto itr:v)
#define pb push_back
#define all(x) (x).begin(),(x).end()
#define dbg(x) cout<<#x"="<<x<<endl
#define mmax(x,y) (x>y?x:y)
#define mmin(x,y) (x<y?x:y)
#define maxch(x,y) x=mmax(x,y)
#define minch(x,y) x=mmin(x,y)
#define uni(x) x.erase(unique(all(x)),x.end())
#define exist(x,y) (find(all(x),y)!=x.end())
#define bcnt __builtin_popcount

#define INF INT_MAX/3

struct UnionFind{
  vector<int> v;
  UnionFind(int n) : v(n, -1) {}
  void init(){ for(int i = 0;i < v.size();i++)v[i]=-1; }
  int find(int x) { return v[x] < 0 ? x : v[x] = find(v[x]); }
  bool unite(int x, int y) {
    x = find(x); y = find(y);
    if (x == y) return false;
    if (-v[x] < -v[y]) swap(x, y);
    v[x] += v[y]; v[y] = x;
    return true;
  }
  bool root(int x) { return v[x] < 0; }
  bool same(int x, int y) { return find(x) == find(y); }
  int size(int x) { return -v[find(x)]; }
};

ll n;
ll dd[]={-1,0,1,0,-1};
vector<P> res;

bool valid(ll i,ll j){
  return i>=0&&i<n&&j>=0&&j<n;
}

int main(){
  cin>>n;
  UnionFind uf(n*n);
  rep(i,n)rep(j,n){
    if((i+j)%2==0)continue;
    bool dame=false;
    //dbg(i); dbg(j);
    rep(d1,4)rep(d2,4){
      ll ni1=i+dd[d1],nj1=j+dd[d1+1];
      ll ni2=i+dd[d2],nj2=j+dd[d2+1];
      if(!valid(ni1,nj1)||!valid(ni2,nj2)||(ni1==ni2&&nj1==nj2))continue;
      if(!uf.same(ni1*n+nj1,ni2*n+nj2))dame=true;
    }
    if(dame){
      res.push_back(P(i,j));
      rep(d1,4)rep(d2,4){
        ll ni1=i+dd[d1],nj1=j+dd[d1+1];
        ll ni2=i+dd[d2],nj2=j+dd[d2+1];
        if(!valid(ni1,nj1)||!valid(ni2,nj2))continue;
        uf.unite(ni1*n+nj1,ni2*n+nj2);
      }
    }
  }
  printf("%lld\n", (ll)res.size());
  rep(i,res.size())printf("%lld %lld\n", res[i].se,res[i].fi);
  return 0;
}

Submission Info

Submission Time
Task J - Connected Checkerboard
User yamad
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2058 Byte
Status WA
Exec Time 174 ms
Memory 15976 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 100
Status
AC × 2
AC × 10
WA × 14
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All sample_01.txt, sample_02.txt, sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
subtask1_01.txt AC 8 ms 1020 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 21 ms 2164 KB
subtask1_04.txt AC 9 ms 1020 KB
subtask1_05.txt AC 54 ms 5872 KB
subtask1_06.txt WA 87 ms 8172 KB
subtask1_07.txt AC 15 ms 1656 KB
subtask1_08.txt WA 94 ms 12268 KB
subtask1_09.txt WA 79 ms 7920 KB
subtask1_10.txt WA 169 ms 15592 KB
subtask1_11.txt WA 165 ms 15208 KB
subtask1_12.txt WA 160 ms 14824 KB
subtask1_13.txt WA 168 ms 15592 KB
subtask1_14.txt WA 165 ms 15336 KB
subtask1_15.txt WA 160 ms 15080 KB
subtask1_16.txt WA 158 ms 15336 KB
subtask1_17.txt WA 159 ms 14696 KB
subtask1_18.txt WA 159 ms 14952 KB
subtask1_19.txt WA 168 ms 15592 KB
subtask1_20.txt WA 174 ms 15976 KB