#include <iostream> #include <vector> #include <cmath> using namespace std; int main(){ int n, k; cin >> n >> k; vector<int> pv = vector<int>(n+2,-1); vector<int> cv = vector<int>(pv); pv[0] = pv[1] = 0; int minYear = 2019; for(int i = 0; i < n; i++){ cv[0] = i % 2 == 0 ? pv[0]+1 : pv[1]*2 - pv[0] + 2; // cout << cv[0]; for(int j = 1; j < i+3; j++){ cv[j] = (i+j) % 2 == 0 ? pv[j]+1 : pv[j+1]+pv[j-1]-pv[j]+2; // cout << " " << cv[j]; } // cout << endl; for(int j = 0, cvix=i; j < i+1; j++, cvix-=2){ int year; cin >> year; if(cv[abs(cvix)] <= k) minYear = min(minYear, year); } pv.swap(cv); } cout << minYear; 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 | #include <iostream> #include <vector> #include <cmath> using namespace std; int main(){ int n, k; cin >> n >> k; vector<int> pv = vector<int>(n+2,-1); vector<int> cv = vector<int>(pv); pv[0] = pv[1] = 0; int minYear = 2019; for(int i = 0; i < n; i++){ cv[0] = i % 2 == 0 ? pv[0]+1 : pv[1]*2 - pv[0] + 2; // cout << cv[0]; for(int j = 1; j < i+3; j++){ cv[j] = (i+j) % 2 == 0 ? pv[j]+1 : pv[j+1]+pv[j-1]-pv[j]+2; // cout << " " << cv[j]; } // cout << endl; for(int j = 0, cvix=i; j < i+1; j++, cvix-=2){ int year; cin >> year; if(cv[abs(cvix)] <= k) minYear = min(minYear, year); } pv.swap(cv); } cout << minYear; return 0; } |