답안 #752806

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
752806 2023-06-03T22:31:03 Z kirakosyan Dijamant (COCI22_dijamant) C++17
0 / 70
1 ms 468 KB
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <cmath>
#include <map>
#include <string>
#include <ios>
#include <iomanip>
#include <deque>
#include <queue>
#include <list> 
#include <stack>

#define FASTIO ios_base::sync_with_stdio(0); cin.tie(NULL);
using ll = long long;
using namespace std;
void solve(){
	int n,m; cin >> n >> m;
    if(n<=2||m<=2){
        cout<<0<<endl;
    }
	vector<string>v(n);
    vector<vector<int>>a(n,vector<int>(m));
    vector<vector<int>>b(n,vector<int>(m));
    vector<vector<int>>c(n,vector<int>(m));
    vector<vector<int>>d(n,vector<int>(m));
    vector<vector<int>>pref(n,vector<int>(m));
	for(int i=0;i<n;i++){
        cin >> v[i];
    }
    for(int i=0;i<n;i++){
        if(v[i][0]=='#'){
            pref[i][0]=1;
        }
        for(int j=1;j<m;j++){
           if(v[i][j]=='#'){
            pref[i][j]=pref[i][j-1]+1;
           } 
            else pref[i][j]=pref[i][j-1];
        }
    }
//     7 10
// .....#...
// ....#.#..
// ...#...#.
// ..#.....#
// ...#...#.
// ....#.#..
// .....#...
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(j!=0&&i!=n-1&&j!=m-1){
                if(v[i+1][j-1]=='#'&&v[i+1][j+1]=='#'&&v[i+1][j]=='.'&&v[i][j]=='#'){
                    a[i+1][j-1]=1;
                    b[i+1][j+1]=1;
                }
            }
            if(j!=0&&i!=0&&j!=m-1){
               if(v[i-1][j-1]=='#'&&v[i-1][j+1]=='#'&&v[i-1][j]=='.'&&v[i][j]=='#'){
                    c[i-1][j-1]=1;
                    d[i-1][j+1]=1;
                } 
            }
        }
    }
    for (int i=0;i<n;i++){
        int arajin=-1,erkrord=-1,cnt=0;
        for(int j=0;j<m;j++){
           if(v[i][j]=='#'&&cnt==0) {
               cnt++;
               arajin=j;
           }
            else if(v[i][j]=='#'&&cnt==1) {
               if(i>=1&&a[i-1][arajin+1]==1&&b[i-1][j-1]==1&&(pref[i-1][j-1]-pref[i-1][arajin])==0){
                   a[i][arajin]=1;
                   b[i][j]=1;
               }
                if(i<=n-2&&c[i+1][arajin+1]==1&&d[i+1][j-1]==1&&(pref[i+1][j-1]-pref[i+1][arajin])){
                   c[i][arajin]=1;
                    d[i][j]=1;
                }
               arajin=j;
           }
        }
    }
    for (int i=n-1;i>=0;i--){
        int arajin=-1,erkrord=-1,cnt=0;
        for(int j=0;j<m;j++){
           if(v[i][j]=='#'&&cnt==0) {
               cnt++;
               arajin=j;
           }
            else if(v[i][j]=='#'&&cnt==1) {
                if(i<=n-2&&c[i+1][arajin+1]==1&&d[i+1][j-1]==1){
                    c[i][arajin]=1;
                    d[i][j]=1;
                }
               arajin=j;
           }
        }
    }
    // for(int i=0;i<n;i++){
    //     for(int j=0;j<m;j++){
    //         cout<<a[i][j]<<" ";
    //     }
    //     cout<<endl;
    // }
    // cout<<endl;
    // for(int i=0;i<n;i++){
    //     for(int j=0;j<m;j++){
    //         cout<<b[i][j]<<" ";
    //     }
    //     cout<<endl;
    // }
    // cout<<endl;
    // for(int i=0;i<n;i++){
    //     for(int j=0;j<m;j++){
    //         cout<<c[i][j]<<" ";
    //     }
    //     cout<<endl;
    // }
    // cout<<endl;
    // for(int i=0;i<n;i++){
    //     for(int j=0;j<m;j++){
    //         cout<<d[i][j]<<" ";
    //     }
    //     cout<<endl;
    // }
    // cout<<endl;

    
    int ans=0;
    for(int i=0;i<n;i++){
        int cnt=0;
            int arajin=-1,erkrord=-1;
        for(int j=0;j<m;j++){
           if(v[i][j]=='#'&&cnt==0) {
               cnt++;
               arajin=j;
           }
            else if(v[i][j]=='#'&&cnt==1) {
               // cout<<i<<" "<<j<<" "<<arajin<<endl;;
                   // cout<<"HECHSTEXKMDNIAHSES"<<endl;
                if(a[i][arajin]==1&&c[i][arajin]==1&&b[i][j]==1&&d[i][j]==1){
                    ans++;
                }
               arajin=j;
           }
        }
    }
    cout<<ans<<endl;
}
signed main() {
        FASTIO
        ll t=1;
        //cin >> t;
        while (t--) {
            solve();
        }
}

Compilation message

Main.cpp: In function 'void solve()':
Main.cpp:68:23: warning: unused variable 'erkrord' [-Wunused-variable]
   68 |         int arajin=-1,erkrord=-1,cnt=0;
      |                       ^~~~~~~
Main.cpp:88:23: warning: unused variable 'erkrord' [-Wunused-variable]
   88 |         int arajin=-1,erkrord=-1,cnt=0;
      |                       ^~~~~~~
Main.cpp:136:27: warning: unused variable 'erkrord' [-Wunused-variable]
  136 |             int arajin=-1,erkrord=-1;
      |                           ^~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 1 ms 468 KB Output is correct
3 Correct 1 ms 468 KB Output is correct
4 Correct 1 ms 468 KB Output is correct
5 Correct 1 ms 468 KB Output is correct
6 Incorrect 1 ms 468 KB Output isn't correct
7 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 1 ms 468 KB Output is correct
3 Correct 1 ms 468 KB Output is correct
4 Correct 1 ms 468 KB Output is correct
5 Correct 1 ms 468 KB Output is correct
6 Incorrect 1 ms 468 KB Output isn't correct
7 Halted 0 ms 0 KB -