Cod sursa(job #2112740)

Utilizator usureluflorianUsurelu Florian-Robert usureluflorian Data 23 ianuarie 2018 20:01:16
Problema Schi Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
using namespace std;
ifstream f ("schi.in");
ofstream g ("schi.out");
const int nmax=3e4+3;
int n,v[nmax],p[nmax],x,t,sol[nmax];
inline int usu(int x)
{
      return x&(-x);
}
void update(int x)
{
      while(x<=n)
      {
            ++v[x];
            x+=usu(x);
      }
}
int query(int x)
{
      int sol=0;
      while(x)
      {
            sol+=v[x];
            x-=usu(x);
      }
      return sol;
}
int main()
{
    f>>n;
    for(int i=1;i<=n;++i) f>>p[i];
    for(int i=n;i>=1;--i)
    {
          t=query(p[i]);
          while(sol[t+p[i]]) t=query(t+p[i]);
          sol[t+p[i]]=i;
          update(p[i]+t);
    }
    for(int i=1;i<=n;++i) g<<sol[i]<<'\n';
    return 0;
}