Cod sursa(job #3135113)

Utilizator Muntean_Vlad_AndreiMuntean Vlad Andrei Muntean_Vlad_Andrei Data 1 iunie 2023 21:01:28
Problema Algoritmul lui Euclid extins Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#define DM 100001
#define MD 9917
#include <algorithm>
#include <fstream>
using namespace std;

ifstream fin ("inv.in");
ofstream fout ("inv.out");
int arb[4*DM], poz[DM], cont, n;
//pair <int, int> p[DM];

void update(int nod, int lo, int hi, int poz)
{
	if (lo == hi)
	{
		arb[nod] = 1;//punem 1 cand ajungem in frunzam
		return;
	}
	int mid = (lo + hi)/2;
	if (poz <= mid)//daca 
	{
		cont+=arb[nod*2+1];
		cont%=MD;
		update(nod*2, lo, mid, poz);
	}
	else
		update(nod*2 + 1, mid + 1, hi, poz);
	arb[nod] = arb[nod*2] + arb[nod*2+1]; //adunam subarbori
}

int main() {
	fin >> n;
	for (int i = 1; i <= n; ++i)
	{
		fin >> poz[i];
	}
	for (int i = 1; i <= n; ++i)
		update(1, 1, n, poz[i]);
	fout << cont;
	return 0;
}