제출 #1271402

#제출 시각아이디문제언어결과실행 시간메모리
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];
}

컴파일 시 표준 에러 (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...