Pagini recente » Cod sursa (job #638189) | Cod sursa (job #2108233) | Cod sursa (job #2940079) | Cod sursa (job #109948) | Cod sursa (job #2230698)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream in("schi.in");
ofstream out("schi.out");
const int NMAX = 30005;
int v[NMAX], n;
bool check[NMAX];
int generator() {
srand(time(NULL));
int n = rand() % 11;
vector<int> d(n, 0);
for(int i = 0; i < n; i ++) {
int pret = rand() % (i + 1) + 1;
d[i] = pret;
}
cout << n << endl;
for(int i = 0; i < d.size(); i ++) {
v[i + 1] = d[i];
cout << d[i] << " ";
}
cout << endl;
return n;
}
void brute(vector<int> tocomp, int n) {
vector<int> c(n + 2, 0);
for(int i = 1; i <= n; i ++) {
for(int j = n; j >= v[i]; j --)
c[j + 1] = c[j];
c[v[i]] = i;
}
for(int i = 1; i <= n; i ++) {
if(tocomp[i] != c[i])
cout << "ATENTIE ";
cout << tocomp[i] << " corect este " << c[i] << endl;
}
}
int main() {
in >> n;
for(int i = 1; i <= n; i ++)
in >> v[i];
// n = generator();
vector<int> sol(n + 1, 0);
for(int i = n; i >= 1; i --) {
int nr = 0;
for(int j = n; j > i; j --)
if(v[j] <= v[i] + nr)
nr ++;
int pos = v[i] + nr;
while(pos <= n && check[pos] == 1)
pos ++;
check[pos] = 1;
sol[pos] = i;
}
for(int i = 1; i <= n; i ++)
out << sol[i] << "\n";
//brute(sol, n);
return 0;
}