Submission #2798859


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#define repd(i,a,b) for(int i=a;i<b;i++)
#define repds(i,a,b) for(int i=a+1;i<=b;i++)
#define rep(i,N) repd(i,0,N)
#define reps(i,N) repds(i,0,N)
#define debug(x) cout<<#x<<"="<<x<<endl
#define debugarr(arr,N,M){rep(i,N+1){rep(j,M+1){if(arr[i][j]==INF)printf(" INF");\
	else printf(" %3d",arr[i][j]);} cout<<endl;}}
#define pb push_back
#define pob pop_back
#define cint(a) int a;cin>>a
#define cint2(a,b) int a,b;cin>>a>>b
#define cint3(a,b,c) int a,b,c;cin>>a>>b>>c
typedef long long ll;
typedef pair<int,int> P;
const int INF=100000000;
const int dx[4]={ 0, 1, 0,-1};
const int dy[4]={ 1, 0,-1, 0};
struct UnionFind {vector<int> par, cnt;
	UnionFind(int NV) { par.clear(); cnt.resize(NV, 1); rep(i, NV) par.push_back(i); }
	void reset() { rep(i, cnt.size()) cnt[i] = 1; rep(i, par.size()) par[i] = i; }
	int operator[](int x) { return par[x] == x ? x : par[x] = operator[](par[x]); }
	void operator()(int x, int y) {x = operator[](x); y = operator[](y);
		if (x != y) par[x] = y, cnt[y] += cnt[x];}};
//--------------------------------------//
struct E{ int cost,from,to;
	bool operator<(E& e) {
        return cost < e.cost;
    }
	bool operator>(const E& e)const {
        return cost > e.cost;
    }
};
int main(){
	int h,w;
	cin>>h>>w;
	int _;
	cin>>_>>_>>_>>_;
	int m[100][100];
	int ans=0;
	rep(i,h) rep(j,w){
		cin>>m[i][j];
		ans+=m[i][j];
	}
	vector<E> e;
	rep(i,h) rep(j,w-1){
		e.pb({m[i][j]*m[i][j+1],i*w+j+1,i*w+j});
	}
	rep(i,w) rep(j,h-1){
		e.pb({m[j][i]*m[j+1][i],j*w+i+w,j*w+i});
	}

	sort(e.begin(),e.end(),greater<E>());
	
	UnionFind uf(h*w);
	
	rep(i,e.size()){
		if(uf[e[i].from]!=uf[e[i].to]){
			uf(e[i].from,e[i].to);
			ans+=e[i].cost;
		}
	}
	
	cout<<ans<<endl;
	return 0;
}

Submission Info

Submission Time
Task D - Game on a Grid
User yukkuriesu
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1818 Byte
Status AC
Exec Time 5 ms
Memory 832 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 32
Set Name Test Cases
Sample subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt
All subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.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, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 1 ms 256 KB
subtask0_sample_02.txt AC 1 ms 256 KB
subtask0_sample_03.txt AC 1 ms 256 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 1 ms 256 KB
subtask1_04.txt AC 1 ms 256 KB
subtask1_05.txt AC 1 ms 256 KB
subtask1_06.txt AC 1 ms 256 KB
subtask1_07.txt AC 5 ms 832 KB
subtask1_08.txt AC 5 ms 832 KB
subtask1_09.txt AC 5 ms 832 KB
subtask1_10.txt AC 5 ms 832 KB
subtask1_11.txt AC 5 ms 832 KB
subtask1_12.txt AC 5 ms 832 KB
subtask1_13.txt AC 5 ms 832 KB
subtask1_14.txt AC 5 ms 832 KB
subtask1_15.txt AC 5 ms 832 KB
subtask1_16.txt AC 4 ms 832 KB
subtask1_17.txt AC 1 ms 256 KB
subtask1_18.txt AC 1 ms 256 KB
subtask1_19.txt AC 1 ms 256 KB
subtask1_20.txt AC 4 ms 832 KB
subtask1_21.txt AC 4 ms 832 KB
subtask1_22.txt AC 5 ms 832 KB
subtask1_23.txt AC 5 ms 832 KB
subtask1_24.txt AC 1 ms 256 KB
subtask1_25.txt AC 1 ms 256 KB
subtask1_26.txt AC 1 ms 256 KB
subtask1_27.txt AC 1 ms 256 KB
subtask1_28.txt AC 1 ms 256 KB
subtask1_29.txt AC 1 ms 256 KB