Submission #1271402

#TimeUsernameProblemLanguageResultExecution timeMemory
1271402SmuggingSpunDoktor (COCI17_doktor)C++20
20 / 100
102 ms38468 KiB
#include<bits/stdc++.h> #define taskname "C" using namespace std; template<class T>bool maximize(T& a, T b){ if(a < b){ a = b; return true; } return false; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if(fopen(taskname".inp", "r")){ freopen(taskname".inp", "r", stdin); } int n; cin >> n; vector<int>a(n + 1), f(n + 1); vector<vector<int>>R(n << 1 | 1); f[0] = 0; for(int i = 1; i <= n; i++){ int l = i, r; cin >> a[i]; if(l > (r = a[i])){ swap(l, r); } R[((l + r) >> 1) + (((r - l) & 1) ? n : 0)].emplace_back(r); f[i] = f[i - 1] + int(a[i] == i); } int best_l = 1, best_r = 1, best = 0; for(int i = 1; i <= n; i -= n - 1){ if(!R[i].empty()){ sort(R[i].begin(), R[i].end()); for(int j = 0; j < R[i].size(); j++){ int r = R[i][j]; if(r > i){ int l = (i << 1) - r; if(maximize(best, f[n] - f[r] + f[l - 1] - (f[r] - f[l - 1]) + j + 1 + int(a[i] == i))){ best_l = l; best_r = r; } } } } if(!R[i += n].empty()){ sort(R[i].begin(), R[i].end()); for(int j = 0; j < R[i].size(); j++){ int r = R[i][j]; if(r > i){ int l = (i << 1) - r + 1; if(maximize(best, f[n] - f[r] + f[l - 1] - (f[r] - f[l - 1]) + j + 1)){ best_l = l; best_r = r; } } } } } cout << a[best_l] << " " << a[best_r]; }

Compilation message (stderr)

doktor.cpp: In function 'int main()':
doktor.cpp:14:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |                 freopen(taskname".inp", "r", stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...