제출 #35518

#제출 시각아이디문제언어결과실행 시간메모리
35518sinhriv중앙값 배열 (balkan11_medians)C++14
0 / 100
0 ms3584 KiB
#include <bits/stdc++.h> using namespace std; const int N = 200010; int n; int a[N]; int b[N]; int d(int x){ if(x < 0) return abs(x); return n + n - x; } int getopp(int x){ return x / abs(x); } bool cmp(pair < int, int > x, pair < int, int > y){ if(getopp(x.first) != getopp(y.first)){ return getopp(x.first) < getopp(y.first); } return d(x.first) < d(y.first); } int main(){ if(fopen("1.inp", "r")){ freopen("1.inp", "r", stdin); } else{ freopen("median.inp", "r", stdin); freopen("median.out", "w", stdout); } set < int > used; scanf("%d", &n); for(int i = 1; i <= n; ++i){ scanf("%d", b + i); } a[1] = b[1]; used.insert(a[1]); vector < pair < int, int > > relate; for(int i = 2; i <= n; ++i){ if(b[i] == b[i - 1]){ relate.emplace_back(b[i - 1], i + i - 1); relate.emplace_back(-b[i - 1], i + i - 2); continue; } if(used.count(b[i]) == 0){ a[i + i - 1] = b[i]; used.insert(b[i]); } else if(b[i] > b[i - 1]){ relate.emplace_back(b[i - 1], i + i - 1); } else{ relate.emplace_back(-b[i - 1], i + i - 1); } if(b[i] > b[i - 1]){ relate.emplace_back(b[i - 1], i + i - 2); } else{ relate.emplace_back(-b[i - 1], i + i - 2); } } set < int > fre; for(int i = 1; i < n + n; ++i){ if(used.count(i) == 0) fre.insert(i); } sort(relate.begin(), relate.end(), cmp); for(auto p : relate){ if(p.first < 0){ a[p.second] = *fre.begin(); fre.erase(fre.begin()); } else{ a[p.second] = *fre.rbegin(); fre.erase(a[p.second]); } } for(int i = 1; i < n + n; ++i){ assert(a[i] != 0); printf("%d ", a[i]); } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

medians.cpp: In function 'int main()':
medians.cpp:29:31: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   freopen("1.inp", "r", stdin);
                               ^
medians.cpp:32:36: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   freopen("median.inp", "r", stdin);
                                    ^
medians.cpp:33:37: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   freopen("median.out", "w", stdout);
                                     ^
medians.cpp:38:17: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
                 ^
medians.cpp:40:21: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", b + i);
                     ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...