Cod sursa(job #2832356)

Utilizator LuxinMatMatasaru Luxin Gabriel LuxinMat Data 13 ianuarie 2022 15:07:12
Problema Schi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
using namespace std;

ifstream cin("schi.in");
ofstream cout("schi.out");

int n, aib[30001];

void update(int pos, int val)
{
  while(pos<=n)
  {
    aib[pos] += val;
    pos += pos&(-pos);
  }
}

int query(int pos)
{
  int sum = 0;
  while(pos>0)
  {
    sum += aib[pos];
    pos -= pos&(-pos);
  }
  return sum;
}

int suma(int nr)
{
  int pos = 0;
  int pas = 1 << 17;
  int s = 0;
  while(pas > 0)
  {
    if(pos+pas < nr)
    {
      pos += pas;
      s += aib[pos+pas];
    }
    pas = pas>>1;
  }
  return s;
}

int main()
{
  cin>>n;
  for(int i=1; i<n; i++)
  {
    int nr;
    cin>>nr;
    update(nr, i);
  }
  for(int i=1; i<=n; i++)
    cout<<suma(i)-suma(i-1)<<'\n';
  return 0;
}