Cod sursa(job #3319990)

Utilizator StonkDavid Andrei Mateis Stonk Data 4 noiembrie 2025 00:28:33
Problema Schi Scor 65
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream fin("schi.in");
ofstream fout("schi.out");

int idata[30005];
int pos[30005];
int treeadditive[30005];

int n;

void bump(int pos);
int query(int pos);

int main() {

  fin >> n;

  for(int i = 1; i <= n; i++){
    fin >> idata[i];
    //cout << i << " was on " << idata[i] << '\n';
  }

  for(int i = n; i >= 1; i--){
    int spos = idata[i];

    int actual = query(spos);
    //cout << "final position for " << i << " is " << additive << '\n';
    pos[actual] = i;

    bump(actual);
    
  }

  for (int i = 1; i <= n; i++) {
    fout << pos[i] << '\n';
  }

  return 0;
}

void bump(int pos){
  treeadditive[pos]++;
}

int query(int pos) {
  int sum = 0;
  int i = 1;
  for(i = 1; !(sum == pos - 1 && treeadditive[i] == 0); i++){
    if(treeadditive[i] == 0) {
      sum += 1;
    }
  }
  //treeadditive[i] = 1;
  /*
  for (int i = 1; i <= n; i++){
    cout << treeadditive[i] << ' ';
  }*/

  //cout << '\n';
  
  //cout << "calculated an additive of " << sum << '\n';
  return i;
}