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
78
79
80
81
82
83
#include <iostream>
using namespace std;
int tab[2000][2000];
int lista[3][10000000];
int main () {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
int n, m, k, x, y, l=1, S;
long long int a, b;
pair <long long int, long long int> wynik;
char ch;
cin>>n>>m>>k;
for(int i=0; i<n; i++) {
    for(int j=0; j<m; j++) {
        cin>>ch;
        if(ch=='X') tab[i][j]=-1;
    }
}
lista[0][0]=n-1;
lista[1][0]=m-1;
for(int i=0; true; i++) {
        if(lista[1][i]<m-1) {
    if(tab[lista[0][i]][lista[1][i]+1]==0) {
        lista[0][l]=lista[0][i];
        lista[1][l]=lista[1][i]+1;
        lista[2][l]=lista[2][i]+1;
        l++;
        tab[lista[0][i]][lista[1][i]+1]=-1;
        }
        }
        if(lista[1][i]>0) {
    if(tab[lista[0][i]][lista[1][i]-1]==0) {
        lista[0][l]=lista[0][i];
        lista[1][l]=lista[1][i]-1;
        lista[2][l]=lista[2][i]+1;
        tab[lista[0][i]][lista[1][i]-1]=-1;
        if(lista[0][l]==0 && lista[1][l]==0) {
            S=lista[2][l];
            break;
        }
        l++;
    }
        }
        if(lista[0][i]<n-1) {
    if(tab[lista[0][i]+1][lista[1][i]]==0) {
        lista[0][l]=lista[0][i]+1;
        lista[1][l]=lista[1][i];
        lista[2][l]=lista[2][i]+1;
        l++;
        tab[lista[0][i]+1][lista[1][i]]=-1;
    }
        }
        if(lista[0][i]>0) {
    if(tab[lista[0][i]-1][lista[1][i]]==0) {
        lista[0][l]=lista[0][i]-1;
        lista[1][l]=lista[1][i];
        lista[2][l]=lista[2][i]+1;
        tab[lista[0][i]-1][lista[1][i]]=-1;
        if(lista[0][l]==0 && lista[1][l]==0) {
            S=lista[2][l];
            break;
        }
        l++;
    }
        }
}
y=(S-(m+n-2))/2;
x=S-y;
cin>>a>>b;
wynik.first=a*x+b*y;
wynik.second=1;
for(int i=1; i<k; i++) {
    cin>>a>>b;
    if(a*x+b*y<wynik.first) {
        wynik.first=a*x+b*y;
        wynik.second=1;
    }
    else if(a*x+b*y==wynik.first) {
        wynik.second++;
    }
}
cout<<wynik.first<<" "<<wynik.second;
}