22042023-01-02 22:04:41kohumarkJegesmedve (50)cpp11Hibás válasz 0/50400ms4572 KiB
#include <iostream>
#include <set>
#define speed ios::sync_with_stdio(false);cin.tie(NULL)
#define mp make_pair
using namespace std;

int tomb[10000][4];
int adat[100][100][2];

int main(){
	int n, m, x, y;
	speed;
	cin >> n >> m;
	int tlen=(n-2)*(m-2)*4+(n+m-4)*6+4*2;
	for(int k=0; k<2; k++){
		for(int i=0; i<n; i++) for(int j=0; j<m; j++){
			cin >> adat[i][j][k];
			if(adat[i][j][0]==-1){x=i; y=j;}
		}
	}
	int v=0;
	for(int i=0; i<n; i++) for(int j=0; j<m; j++){
		if(i>0){tomb[v][0]=i; tomb[v][1]=j; tomb[v][2]=i-1; tomb[v][3]=j; v++;}
		if(i<n-1){tomb[v][0]=i; tomb[v][1]=j; tomb[v][2]=i+1; tomb[v][3]=j; v++;}
		if(j>0){tomb[v][0]=i; tomb[v][1]=j; tomb[v][2]=i; tomb[v][3]=j-1; v++;}
		if(j<m-1){tomb[v][0]=i; tomb[v][1]=j; tomb[v][2]=i; tomb[v][3]=j+1; v++;}
	}
	int temp=0; int halak=0; int sol=0; int rt = 0; int rh = 0;
	while(true){
		set<pair<int,int>> places;
		set<pair<int,int>> last;
		places.insert(mp(x,y));
		v=0; int sx = x; int sy = y;
		while(!places.empty()){
			auto it=places.begin();
			sx=(*it).first; sy=(*it).second;
			v=0;
			for(int i=0; i<tlen; i++){
				if(tomb[i][0]==sx&&tomb[i][1]==sy){
					if(adat[tomb[i][2]][tomb[i][3]][0]>=temp&&!last.count(mp(tomb[i][2],tomb[i][3]))){places.insert(mp(tomb[i][2],tomb[i][3])); v++;}
				}
				if(v==4){v=0; break;}
			}
			last.insert(*it); places.erase(it);
		}
		halak=0; int ntemp=1000000001;
		for(auto it=last.begin(); it!=last.end(); it++){
			pair<int,int> pos = *it;
			if(adat[pos.first][pos.second][0]>temp) ntemp=min(ntemp,adat[pos.first][pos.second][0]);
			halak+=adat[pos.first][pos.second][1];
		}
		places.clear(); last.clear();
		cout << rt << ' ' << temp << ' ' << rh << ' ' << halak << '\n';
		if(temp!=0) sol+=min(temp-rt,rh-halak);
		if(temp==1000000001) break;
		rt = temp;
		rh = halak;
		temp = ntemp;
	}
	cout << sol;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Hibás válasz0/03ms1840 KiB
2Hibás válasz0/013ms2168 KiB
3Hibás válasz0/314ms2584 KiB
4Hibás válasz0/329ms2992 KiB
5Futási hiba0/33ms3164 KiB
6Futási hiba0/44ms3456 KiB
7Hibás válasz0/32ms3032 KiB
8Hibás válasz0/32ms3060 KiB
9Hibás válasz0/33ms3204 KiB
10Hibás válasz0/43ms3276 KiB
11Időlimit túllépés0/4400ms2788 KiB
12Időlimit túllépés0/4349ms2888 KiB
13Időlimit túllépés0/4352ms4076 KiB
14Futási hiba0/44ms4336 KiB
15Futási hiba0/44ms4340 KiB
16Futási hiba0/44ms4572 KiB