#include<bits/stdc++.h> using namespace std; string znak; int odl[2010][2010]; bool tab[2010][2010]; deque<int> kolejkax,kolejkay; long long mini={5000000000000000}; long long n,m,k,i,j,ilosc,potential,a,b,odp; int wx,wy; int Droga(int y, int x) { if (tab[y][x]==true) { tab[y][x]=false; //cout<<"juz nie moze być"<<y<<" "<<x<<'\n'; odl[y][x]=odl[wy][wx]+1; kolejkay.push_back(y); kolejkax.push_back(x); } return 0; } int main () { cin>>n>>m>>k; for (i=1;i<=n;i++) { cin>>znak; for (j=1;j<=m;j++) { if (znak[j-1]=='.') { tab[i][j]=true; } } } wx=1; wy=1; odl[1][1]=0; tab[1][1]=false; while(wy!=n || wx!=m) { //cout<<wy<<" "<<wx<<'\n'; //tab[wy][wx]=false; Droga(wy+1,wx); Droga(wy-1,wx); Droga(wy,wx+1); Droga(wy,wx-1); wy=kolejkay.front(); wx=kolejkax.front(); kolejkay.pop_front(); kolejkax.pop_front(); } //cout<<odl[n][m]<<'\n'; odp=(odl[n][m]-(n+m-2)); odp/=2; for (i=1;i<=k;i++) { cin>>a>>b; potential=(n+m-2)*a+odp*(a+b); if (potential<=mini) { if (potential<mini) { ilosc=1; mini=potential; } else { ilosc++; } } } cout<<mini<<" "<<ilosc<<'\n'; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #include<bits/stdc++.h> using namespace std; string znak; int odl[2010][2010]; bool tab[2010][2010]; deque<int> kolejkax,kolejkay; long long mini={5000000000000000}; long long n,m,k,i,j,ilosc,potential,a,b,odp; int wx,wy; int Droga(int y, int x) { if (tab[y][x]==true) { tab[y][x]=false; //cout<<"juz nie moze być"<<y<<" "<<x<<'\n'; odl[y][x]=odl[wy][wx]+1; kolejkay.push_back(y); kolejkax.push_back(x); } return 0; } int main () { cin>>n>>m>>k; for (i=1;i<=n;i++) { cin>>znak; for (j=1;j<=m;j++) { if (znak[j-1]=='.') { tab[i][j]=true; } } } wx=1; wy=1; odl[1][1]=0; tab[1][1]=false; while(wy!=n || wx!=m) { //cout<<wy<<" "<<wx<<'\n'; //tab[wy][wx]=false; Droga(wy+1,wx); Droga(wy-1,wx); Droga(wy,wx+1); Droga(wy,wx-1); wy=kolejkay.front(); wx=kolejkax.front(); kolejkay.pop_front(); kolejkax.pop_front(); } //cout<<odl[n][m]<<'\n'; odp=(odl[n][m]-(n+m-2)); odp/=2; for (i=1;i<=k;i++) { cin>>a>>b; potential=(n+m-2)*a+odp*(a+b); if (potential<=mini) { if (potential<mini) { ilosc=1; mini=potential; } else { ilosc++; } } } cout<<mini<<" "<<ilosc<<'\n'; return 0; } |