Cod sursa(job #1847458)

Utilizator andreiulianAndrei andreiulian Data 14 ianuarie 2017 17:22:51
Problema Schi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream> 
#include <fstream>
#include <cmath>
#include <vector>
//#include <set>
#include <algorithm>
//#include <map>
//#include <cstring>
//#include <string>
//#include <queue>

#define mp make_pair
#define pb push_back
#define ff(i, x, n) for (int i = x; i <= n; ++i)
#define dd cout << 
#define nn << '\n'
#define ss << ' ' <<
#define z(x) ((x ^ (x - 1)) & x)
using namespace std;
int n, aib[30005], v[30005];
void aduna(int x);
int intreaba(int x);
int main(){
		freopen("schi.in", "r", stdin);
		freopen("schi.out", "w", stdout);
		int i, m, mp;
		cin >> n;
		ff(i, 1, n) {
			cin >> v[i];
		}
		for (i = n; i > 0; --i) {
			m = 0;
			do{
				mp = m;
				m = intreaba(v[i]);
				v[i] += (m - mp);
			} while (m - mp);
			aduna(v[i]);
			dd i ss v[i] nn;
		}
}

void aduna(int x) {
	do {
		++aib[x];
		x += z(x);
	} while (x <= n);
}

int intreaba(int x) {
	int r = 0;
	do {
		r += aib[x];
		x -= z(x);
	} while (x);
	return r;
}