|
|
back to boardКто-нибудь может помочь? Posted by Moraxis 20 Jun 2015 20:00 Не могу пройти 10 тест, по цифрам там похоже n и m в районе 500. Все тесты, которые здесь нашел на форуме проходят. #include <iostream> using namespace std; int search(int a, int b); struct ABC { int x; int y; }; ABC s[101] = {}; int main() { int n = 0; //ось X int m = 0; //ось Y cin >> n; cin >> m; int k = 0; cin >> k; for(int i = 0; i < k; i++) //вводим координаты проходных кварталов { cin >> s[i].x; cin >> s[i].y; } int **l = new int* [n+1]; for (int count = 0; count < n+1; count++) l[count] = new int [m+1]; for(int i = 0; i <= n; i++) { for(int j = 0; j <= m; j++) { l[i][j] = 0; //просто заполняем массив нулями } } int b = 0; for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) //идем снизу вверх и слева направо { l[i][j] = l[i-1][j]; if (b == 1) { l[i][j] = l[i][j-1]; } if (search(i, j) && l[i-1][j] == l[i][j-1]) { l[i][j] += 1; b = 1; } if (l[i][j] < l[i-1][j]) l[i][j] = l[i-1][j]; } b = 0; } long long res = 0; res = (m + n) * 100 - l[n][m] * 58.5; // в l[n][m] хранится количество проходных кварталов cout << res; for (int count = 0; count < n+1; count++) delete [] l[count]; system("pause"); return 0; } int search(int a, int b) //функция поиска проходных кварталов { for(int i = 0;; i++) { if (s[i].x == a && s[i].y == b) return 1; if (s[i].x == 0 && s[i].y == 0) break; //барьер } return 0; } Re: Кто-нибудь может помочь? Posted by Moraxis 20 Jun 2015 20:28 he had already decided |
|
|