2198 2023. 01. 02 12:09:08 kohumark Jegesmedve (50) cpp11 Hibás válasz 16/50 372ms 3604 KiB
#include <bits/stdc++.h>
#define speed ios::sync_with_stdio(0);cin.tie(0)
using namespace std;


int main(){
	speed;
	int n, m, x, y;
	cin >> n >> m;
	int t[n][m]; int f[n][m]; int c[n][m];
	for(int i=0; i<n; i++) for(int j=0; j<m; j++){
		cin >> t[i][j];
		c[i][j] = 0;
		if(t[i][j]==-1){x=i; y=j;}
	}
	for(int i=0; i<n; i++) for(int j=0; j<m; j++) cin >> f[i][j];
	long long int temp=0;
	int e=0;
	int old=0; int r=0;
	while(true){
		for(int i=0; i<n+m; i++){
			for(int j=-i; j<i+1; j++){
				int dx1=x+i-abs(j);
				int dx2=x-i+abs(j);
				int dy=y+j;
				if((dx1>-1&&dx1<n&&dy>-1&&dy<m)&&(t[dx1][dy]==-1 || t[dx1][dy] >= temp)&&((t[dx1][dy]==-1)||(dx1-1>-1&&c[dx1-1][dy])||(dx1+1<n&&c[dx1+1][dy])||(dy-1>-1&&c[dx1][dy-1])||(dy+1<m&&c[dx1][dy+1]))) c[dx1][dy]=1;
				if((dx2>-1&&dx2<n&&dy>-1&&dy<m)&&(t[dx2][dy]==-1 || t[dx2][dy] >= temp)&&((t[dx2][dy]==-1)||(dx2-1>-1&&c[dx2-1][dy])||(dx2+1<n&&c[dx2+1][dy])||(dy-1>-1&&c[dx2][dy-1])||(dy+1<m&&c[dx2][dy+1]))) c[dx2][dy]=1;
			}
		}
		if(old==e) r++;
		else r=0;
		if(r==e){temp--; break;}
		old=e; e=0;
		for(int i=0; i<n; i++) for(int j=0; j<m; j++) if(c[i][j]){
			e+=f[i][j];
			c[i][j]=0;
		}
		if(old==e&&temp>0&&e-1==1) break;
		if(e==0) break;
		temp++;
	}
	cout << temp;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 16/50
1 Elfogadva 0/0 3ms 1896 KiB
2 Elfogadva 0/0 92ms 2084 KiB
3 Hibás válasz 0/3 4ms 2332 KiB
4 Hibás válasz 0/3 6ms 2672 KiB
5 Elfogadva 3/3 4ms 2872 KiB
6 Hibás válasz 0/4 7ms 3016 KiB
7 Elfogadva 3/3 17ms 3048 KiB
8 Elfogadva 3/3 27ms 3016 KiB
9 Elfogadva 3/3 39ms 3084 KiB
10 Elfogadva 4/4 50ms 3084 KiB
11 Időlimit túllépés 0/4 367ms 3232 KiB
12 Időlimit túllépés 0/4 372ms 2312 KiB
13 Időlimit túllépés 0/4 361ms 2568 KiB
14 Időlimit túllépés 0/4 365ms 3436 KiB
15 Időlimit túllépés 0/4 345ms 3604 KiB
16 Időlimit túllépés 0/4 349ms 2864 KiB