#include <iostream> #include <vector> void checkLess(int key, int val, std::vector<int>& minYears) { if((minYears[key] == 2020) || (minYears[key] > val)) { minYears[key] = val; } } int main() { int n, k; std::cin>>n>>k; std::vector<int> minYears(n * n, 2020); std::vector<int> diffs; diffs.push_back(1); std::cin>>minYears[1]; if(n == 1) { std::cout<<minYears[1]<<"\n"; return 0; } std::cin>>minYears[2]; int val; std::cin>>val; if(val < minYears[2]) { minYears[2] = val; } int last = n; for(int r = 3; r <= last; ++r) { if(r % 2 == 1) { diffs.push_back(1); } std::vector<int> v(r + 1, 0); int mid = (r / 2) + (r % 2); for(int c = 1; c <= mid; ++c) { if(c == 1) { v[c] = r; } else { v[c] = v[c - 1] + diffs[c - 1]; ++ diffs[c - 1]; } std::cin>>val; checkLess(v[c], val, minYears); } int a = mid; int b = mid; if(r % 2 == 0) { ++b; } for(int c = 1; c <= r / 2; ++c) { v[a + c] = v[b - c]; std::cin>>val; checkLess(v[a + c], val, minYears); } } int res = 2020; for(int i = 1; i <= k; ++i) { if(minYears[i] < res) { res = minYears[i]; } } std::cout<<res<<"\n"; }
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 <iostream> #include <vector> void checkLess(int key, int val, std::vector<int>& minYears) { if((minYears[key] == 2020) || (minYears[key] > val)) { minYears[key] = val; } } int main() { int n, k; std::cin>>n>>k; std::vector<int> minYears(n * n, 2020); std::vector<int> diffs; diffs.push_back(1); std::cin>>minYears[1]; if(n == 1) { std::cout<<minYears[1]<<"\n"; return 0; } std::cin>>minYears[2]; int val; std::cin>>val; if(val < minYears[2]) { minYears[2] = val; } int last = n; for(int r = 3; r <= last; ++r) { if(r % 2 == 1) { diffs.push_back(1); } std::vector<int> v(r + 1, 0); int mid = (r / 2) + (r % 2); for(int c = 1; c <= mid; ++c) { if(c == 1) { v[c] = r; } else { v[c] = v[c - 1] + diffs[c - 1]; ++ diffs[c - 1]; } std::cin>>val; checkLess(v[c], val, minYears); } int a = mid; int b = mid; if(r % 2 == 0) { ++b; } for(int c = 1; c <= r / 2; ++c) { v[a + c] = v[b - c]; std::cin>>val; checkLess(v[a + c], val, minYears); } } int res = 2020; for(int i = 1; i <= k; ++i) { if(minYears[i] < res) { res = minYears[i]; } } std::cout<<res<<"\n"; } |