제출 #647720

#제출 시각아이디문제언어결과실행 시간메모리
647720Alleks_Bmedians (balkan11_medians)C++14
0 / 100
1 ms340 KiB
#include <bits/stdc++.h>
#define L 200005
using namespace std;
ifstream fin("medians.in");
ofstream fout("medians.out");
int v[L];
bool vis[L];
int main(){
  int n, i, j, x, i1, i2, smaller, bigger;
  fin >> n >> x;
  v[1] = x;
  vis[x] = true;
  i1 = 1;
  i2 = 2 * n - 1;
  for (i = 1; i < n; i++){
    while (vis[i1])
      i1++;
    while (vis[i2])
      i2--;
    fin >> x;
    if (vis[x]){
      smaller = 0;
      for (j = 1; j < x; j++)
        smaller += vis[j];
      bigger = 2 * i - 2 - smaller;
      if (smaller == bigger){
        v[2 * i] = i1;
        v[2 * i + 1] = i2;
        vis[i1] = vis[i2] = true;
      }
      else if (smaller < bigger){
        v[2 * i] = i1;
        vis[i1] = true;
        while (vis[i1])
          i1++;
        v[2 * i + 1] = i1;
        vis[i1] = true;
      }
      else{
        v[2 * i] = i2;
        vis[i2] = true;
        while (vis[i2])
          i2++;
        v[2 * i + 1] = i2;
        vis[i2] = true;
      }
    }
    else{
      smaller = 0;
      for (j = 1; j < x; j++)
        smaller += vis[j];
      bigger = 2 * i - 1 - smaller;
      if (smaller > bigger){
        v[2 * i] = i2;
        v[2 * i + 1] = x;
        vis[i2] = vis[x] = true;
      }
      else{
        v[2 * i] = i1;
        v[2 * i + 1] = x;
        vis[i1] = vis[x] = true;
      }
    }
  }
  for (i = 1; i < 2 * n; i++)
    fout << v[i] << " ";
  fout << "\n";
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...