#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"; } |
English