# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
80037 | 2018-10-18T11:13:55 Z | pzdba | Doktor (COCI17_doktor) | C++14 | 314 ms | 92652 KB |
#include <bits/stdc++.h> using namespace std; typedef pair<int, int> pii; typedef pair<int, pii> pipii; int a[500005]; int pref[500005], suff[500005]; vector<pipii> dp[3000005]; int main(){ int n; scanf("%d", &n); for(int i=1;i<=n;i++){ scanf("%d", &a[i]); if(i == a[i]) pref[i] = 1; pref[i] += pref[i-1]; } for(int i=n;i>=1;i--){ if(i == a[i]) suff[i] = 1; suff[i] += suff[i+1]; } int ans = 0; for(int i=1;i<=n;i++){ int diff = a[i]-i; if(diff == 0) ans++; int s = 0, e = 0; if(diff < 0) s = i+diff, e = i; else s = i, e = i+diff; int le = e-s+1; diff += 2*i; diff += 1000000; dp[diff].emplace_back(pipii(le, pii(s, e))); } int st = a[1], en = a[1]; for(int i=0;i<=3000000;i++){ int sum = 0; sort(dp[i].begin(), dp[i].end()); for(int j=0;j<dp[i].size();j++){ int le = dp[i][j].first; int s = dp[i][j].second.first; int e = dp[i][j].second.second; sum++; if(ans < sum + pref[s-1] + suff[e+1]){ ans = sum + pref[s-1] + suff[e+1]; st = s; en = e; } } } printf("%d %d\n", a[st], a[en]); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 85 ms | 70776 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 72 ms | 70936 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 72 ms | 70936 KB | Output is correct |
2 | Correct | 72 ms | 71024 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 74 ms | 71100 KB | Output is correct |
2 | Correct | 74 ms | 71100 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 74 ms | 71100 KB | Output is correct |
2 | Correct | 78 ms | 71228 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 73 ms | 71256 KB | Output is correct |
2 | Correct | 73 ms | 71256 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 75 ms | 71388 KB | Output is correct |
2 | Correct | 171 ms | 80928 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 104 ms | 80928 KB | Output is correct |
2 | Correct | 104 ms | 80928 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 314 ms | 89636 KB | Output is correct |
2 | Correct | 230 ms | 89636 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 197 ms | 89636 KB | Output is correct |
2 | Correct | 182 ms | 92652 KB | Output is correct |