ULSG T2 95pts 求调
  • 板块学术版
  • 楼主rainygame
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/6/11 19:13
  • 上次更新2023/10/23 13:20:51
查看原帖
ULSG T2 95pts 求调
804607
rainygame楼主2023/6/11 19:13
#include <bits/stdc++.h>
using namespace std;
#define MAXN 1001

int n, ind;
long long ans;
long long a[MAXN][MAXN];
vector<long long> vec;

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
//	freopen("game003.in", "r", stdin);
//	freopen("game.out", "w", stdout);
	
	cin >> n;
	for (int i(1); i<=n; ++i){
		for (int j(1); j<=n; ++j) cin >> a[i][j];
	}
	
	for (int j(1); j<=n; ++j){
		vec.clear();
		for (int i(n); i; --i){
			if (a[i][j]) vec.push_back(a[i][j]);
		}
		for (int i(0); i<vec.size()-1; ++i){
			if (vec[i] == vec[i+1]){
				vec[i] <<= 1;
				vec[i+1] = 0;
				ans += vec[i];
			}
		}
		
		ind = 0;
		for (int i(1); i<=n; ++i) a[i][j] = 0; 
		for (int i(n); ind<vec.size(); --i, ++ind){
			if (vec[ind]) a[i][j] = vec[ind];
			else ++i;
		}
	}
	
	cout << ans << '\n';
	for (int i(1); i<=n; ++i){
		for (int j(1); j<=n; ++j) cout << a[i][j] << ' ';
		cout << '\n';
	}
	
	return 0;
}
2023/6/11 19:13
加载中...