22002023-01-02 13:56:54kohumarkJegesmedve (50)cpp11Időlimit túllépés 6/50400ms4324 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 k=0; k<n+m; k++){
			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ÖsszpontTesztVerdiktIdőMemória
base6/50
1Elfogadva0/03ms1760 KiB
2Időlimit túllépés0/0400ms1904 KiB
3Elfogadva3/3156ms2184 KiB
4Időlimit túllépés0/3358ms1500 KiB
5Elfogadva3/3104ms2744 KiB
6Időlimit túllépés0/4382ms2160 KiB
7Időlimit túllépés0/3372ms2880 KiB
8Időlimit túllépés0/3351ms2964 KiB
9Időlimit túllépés0/3365ms2244 KiB
10Időlimit túllépés0/4365ms2480 KiB
11Időlimit túllépés0/4308ms3408 KiB
12Időlimit túllépés0/4372ms3568 KiB
13Időlimit túllépés0/4377ms3788 KiB
14Időlimit túllépés0/4352ms3052 KiB
15Időlimit túllépés0/4372ms4300 KiB
16Időlimit túllépés0/4365ms4324 KiB