198182025-12-24 11:07:33ubormaciVersenyeredményekcpp17Elfogadva 100/10023ms2804 KiB
#include <iostream>
#include <algorithm> // for sort, mainly
#include <vector>
#include <map>
#include <set>
#include <cmath>
#include <array>
#include <string>
#include <cstdio>
#include <iterator>
#include <unordered_set>
#include <cstdint> // for int64_t, int32_t, etc
#include <queue>
#include <stack>
#include <deque>
#include <numeric> // gcd, lcm
#include <fstream>
#include <bitset> // for bitset
#include <iomanip>
#include <cassert> // for set with custom ordering
#include <type_traits> // for set with custom ordering
#include <utility> // for swap, forward, etc
using namespace std;

#pragma GCC optimize("O2")
// #pragma GCC optimize("O1","O2","O3","Ofast","unroll-loops")
// #pragma GCC target("sse","sse2","sse3","sse4.1","sse4.2","avx","avx2","fma")

template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; }
template<typename T_container, typename T = typename enable_if<!is_same<T_container, string>::value, typename T_container::value_type>::type> ostream& operator<<(ostream &os, const T_container &v) { os << '{'; string sep; for (const T &x : v) os << sep << x, sep = ", "; return os << '}'; }
void dbg_out() { cout << endl; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) { cout << ' ' << H; dbg_out(T...); }
#ifdef LOCAL
#define dbg(...) cout << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__)
#else
#define dbg(...)
#endif

/*

notes:

int64_t
stoi(string s) -> string to int
to_string() -> int (or else) to string

vector declaration:
vector<ll> v(n, 0)
vector<vector<ll>> v(n, vector<ll>(n, 0));

{if statement} ? {truth value} : {false value}

#ifdef LOCAL
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
#endif

std::lcm(ll a, ll b), std::gcd(int a, int b)

cout << fixed << setprecision(n);

set with custom ordering
set<ll, decltype(&cmp)> qu(cmp);

*/

typedef int64_t ll;

void solve() {

	ll n;
	cin >> n;

	// meghatorozzuk, hogy melyik
	// aztan atalakitjuk

	vector<ll> v(n+1, 0);

	// trivialis eset: 1 2 3 4 5 6 7 8 9
	// megnezzuk, hogy james-e e
	// ami akkor lehetseges, ha v[i] > v[i-1] + 1

	bool james = false;

	for(ll i = 1; i <= n; i++) {
		cin >> v[i];
		if(v[i] > v[i-1] + 1) {
			james = true;
		}
	}

	if(james) {
		// james-t
		// francesso-ba

		vector<ll> to(n+1, 0);

		ll ctr = 1;
		for(ll i = 1; i <= n; i++) {
			if(to[v[i]] == 0) {
				to[v[i]] = ctr;
				ctr++;
			}

			v[i] = to[v[i]];
		}

	}else{
		// francesso-t
		// megszamoljuk, elotte hany ugyanolyan van
		// es v[i-1] + same[i-1]

		vector<ll> same(n+1, 0);
		vector<ll> nw(n+1, 0);

		for(ll i = 1; i <= n; i++) {

			//cerr << "\ni=" << i << "; nw=" << nw << "; same=" << same; 

			//cerr << "\nv[i]=" << v[i] << "; v[i-1]=" << v[i-1];

			if(v[i] == v[i-1]) {
				same[i] += same[i-1] + 1;
				nw[i] = nw[i-1];
			}else{
				//same[i] = 1;
				nw[i] = nw[i-1] + same[i-1] + 1;
			}
		}

		for(ll i = 1; i <= n; i++) {
			v[i] = nw[i];
		}
	}

	for(ll i = 1; i <= n; i++)
	{
		cout << v[i] << " ";
	}
}

int main()
{
	std::ios_base::sync_with_stdio(false);
	//cin.tie(nullptr);
	//cout.tie(nullptr);

	solve();

	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms500 KiB
2Elfogadva1ms316 KiB
subtask210/10
3Elfogadva18ms1844 KiB
4Elfogadva18ms1992 KiB
5Elfogadva19ms1880 KiB
6Elfogadva18ms2796 KiB
subtask320/20
7Elfogadva23ms1860 KiB
8Elfogadva21ms1844 KiB
9Elfogadva23ms2036 KiB
10Elfogadva23ms1844 KiB
11Elfogadva1ms316 KiB
subtask420/20
12Elfogadva23ms2804 KiB
13Elfogadva21ms2548 KiB
14Elfogadva23ms2804 KiB
15Elfogadva23ms2612 KiB
16Elfogadva1ms316 KiB
subtask550/50
17Elfogadva1ms316 KiB
18Elfogadva1ms560 KiB
19Elfogadva18ms1844 KiB
20Elfogadva18ms1992 KiB
21Elfogadva19ms1880 KiB
22Elfogadva18ms2796 KiB
23Elfogadva23ms1860 KiB
24Elfogadva21ms1844 KiB
25Elfogadva23ms2036 KiB
26Elfogadva23ms1844 KiB
27Elfogadva1ms316 KiB
28Elfogadva23ms2804 KiB
29Elfogadva21ms2548 KiB
30Elfogadva23ms2804 KiB
31Elfogadva23ms2612 KiB
32Elfogadva1ms316 KiB
33Elfogadva23ms2760 KiB
34Elfogadva23ms2752 KiB
35Elfogadva21ms1992 KiB
36Elfogadva23ms2764 KiB
37Elfogadva23ms2612 KiB
38Elfogadva23ms2792 KiB
39Elfogadva21ms1996 KiB
40Elfogadva21ms1844 KiB