Pagini recente » Cod sursa (job #67737) | Cod sursa (job #2089136)
#include <fstream>
using namespace std;
ifstream f("concurs1.in");
ofstream g("concurs1.out");
int n,arb[2000001],v[500001];
void creare(int nod,int a,int b)
{
if(a==b) arb[nod]=1;
else {
int mij;
mij=(a+b)/2;
creare(2*nod,a,mij);
creare(2*nod+1,mij+1,b);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
}
void update(int nod,int a,int b,int val)
{
if(a==b) {g<<a<<" ";arb[nod]--;}
else {
int mij;
mij=(a+b)/2;
if(arb[2*nod]>=val) update(2*nod,a,mij,val);
else update(2*nod+1,mij+1,b,val-arb[2*nod]);
arb[nod]--;
}
}
int main()
{ int i,ok=1;
f>>n;
creare(1,1,n);
for(i=1;i<=n;i++)
{f>>v[i];
if(v[i]>n-i) ok=0;}
if(!ok) g<<"NU ARE SOLUTIE";
else {
for(i=1;i<=n;i++)
update(1,1,n,v[i]+1);
}
g.close();
return 0;
}