結果
| 問題 | No.3558 Dominoes, Black and White |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-05-29 19:52:43 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,474 bytes |
| 記録 | |
| コンパイル時間 | 3,258 ms |
| コンパイル使用メモリ | 338,648 KB |
| 実行使用メモリ | 11,520 KB |
| 最終ジャッジ日時 | 2026-05-29 19:52:56 |
| 合計ジャッジ時間 | 9,960 ms |
|
ジャッジサーバーID (参考情報) |
judge4_1 / judge2_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点 | 10 % | AC * 30 |
| 満点 | 90 % | AC * 87 RE * 2 |
| 合計 | 10 点 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<vvl> vvvl;
typedef vector<vvvl> vvvvl;
typedef vector<bool> vb;
typedef vector<vb> vvb;
typedef vector<vvb> vvvb;
typedef vector<vvvb> vvvvb;
typedef pair<ll,ll> pl;
typedef pair<ll,pl> ppl;
typedef pair<ll,ppl> pppl;
typedef pair<ll,pppl> pppppl;
#define rep(i,a,b) for(int i=(a);i<(b);i++)
#define rrep(i,a,b) for(int i=(b)-1;i>=(a);i--)
#define all(a) begin(a),end(a)
#define F first
#define S second
const ll mod=998244353;
const string als="abcdefghijklmnopqrstuvwxyz";
const string ALS="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int main(){
int n;
cin>>n;
ll an=0;
vector<vector<int>> v(n,vector<int>(2*n,0));
vector<int> a(n,-n);
rep(i,0,n){
rep(j,0,2*n){
char c;
cin>>c;
if(c=='#'){
a[i]++;
v[i][j]=1;
}
}
}
rep(i,0,n-1){
int j=0;
while(a[i]>0){
if(v[i][j]>0){
an++;
v[i][j]=v[i][j]-1;
v[i+1][j]++;
a[i]=a[i]-1;
a[i+1]++;
}
else{
j++;
}
}
while(a[i]<0){
if(v[i+1][j]>0){
an++;
v[i+1][j]=v[i+1][j]-1;
v[i][j]++;
a[i]++;
a[i+1]=a[i+1]-1;
}
else{
j++;
}
}
}
rep(i,0,n){
rep(j,0,2*n-1){
if(v[i][j]>0 && j<n){
an=an+v[i][j];
v[i][j+1]=v[i][j]+v[i][j+1];
}
if(v[i][j]>1 && j>=n){
an=an+v[i][j]-1;
v[i][j+1]=v[i][j]+v[i][j+1]-1;
}
}
}
cout<<an<<endl;
}