5744 | 2023. 09. 14 17:13:19 | kukkerman | Színes szobák (50 pont) | cpp17 | Elfogadva 50/50 | 188ms | 36160 KiB |
#include <iostream>
#include <vector>
#include <unordered_map>
void beolvas(std::istream &in, std::vector<int> &szobak, int &szinek_szama, std::vector<std::pair<int, int>> &utasitasok) {
int n, m;
in >> n >> szinek_szama >> m;
szobak.resize(n);
for (auto i = 0; i < n; i++) {
in >> szobak[i];
}
utasitasok.resize(m);
for (auto i = 0; i < m; i++) {
int szin, irany;
in >> szin >> irany;
utasitasok[i] = { szin, irany };
}
}
void feldolgoz(const std::vector<int> &szobak, int szinek_szama, const std::vector<std::pair<int, int>> &utasitasok) {
const auto n = szobak.size();
std::vector<std::unordered_map<int, int>> poz(szinek_szama + 1);
for (auto i = 0; i < n; i++) {
poz[szobak[i]].emplace(i, 1);
}
int tavozo_db = 0;
for (auto [akt_szin, irany] : utasitasok) {
std::unordered_map<int, int> uj_akt_szin_poz;
for (auto [regi_poz, db] : poz[akt_szin]) {
const auto uj_poz = regi_poz + irany;
if (uj_poz == -1 || uj_poz == n) {
tavozo_db += db;
} else {
const auto regi_szin = szobak[regi_poz];
const auto uj_szin = szobak[uj_poz];
if (regi_szin != uj_szin) {
poz[uj_szin][uj_poz] += db;
} else {
uj_akt_szin_poz.emplace(uj_poz, db);
}
}
}
poz[akt_szin] = std::move(uj_akt_szin_poz);
}
std::cout << tavozo_db << std::endl;
}
int main() {
std::vector<int> szobak;
int szinek_szama;
std::vector<std::pair<int, int>> utasitasok;
beolvas(std::cin, szobak, szinek_szama, utasitasok);
feldolgoz(szobak, szinek_szama, utasitasok);
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 50/50 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1812 KiB | |||
2 | Elfogadva | 0/0 | 123ms | 25108 KiB | |||
3 | Elfogadva | 1/1 | 4ms | 2708 KiB | |||
4 | Elfogadva | 1/1 | 4ms | 2740 KiB | |||
5 | Elfogadva | 1/1 | 4ms | 2952 KiB | |||
6 | Elfogadva | 1/1 | 4ms | 3172 KiB | |||
7 | Elfogadva | 1/1 | 4ms | 3380 KiB | |||
8 | Elfogadva | 1/1 | 4ms | 3512 KiB | |||
9 | Elfogadva | 1/1 | 3ms | 3592 KiB | |||
10 | Elfogadva | 1/1 | 4ms | 3872 KiB | |||
11 | Elfogadva | 1/1 | 4ms | 3712 KiB | |||
12 | Elfogadva | 1/1 | 4ms | 4088 KiB | |||
13 | Elfogadva | 1/1 | 12ms | 5004 KiB | |||
14 | Elfogadva | 1/1 | 8ms | 5780 KiB | |||
15 | Elfogadva | 1/1 | 10ms | 6428 KiB | |||
16 | Elfogadva | 1/1 | 14ms | 7008 KiB | |||
17 | Elfogadva | 1/1 | 17ms | 6860 KiB | |||
18 | Elfogadva | 1/1 | 17ms | 6640 KiB | |||
19 | Elfogadva | 1/1 | 87ms | 14764 KiB | |||
20 | Elfogadva | 1/1 | 123ms | 15792 KiB | |||
21 | Elfogadva | 1/1 | 101ms | 15124 KiB | |||
22 | Elfogadva | 1/1 | 105ms | 15444 KiB | |||
23 | Elfogadva | 1/1 | 119ms | 15640 KiB | |||
24 | Elfogadva | 1/1 | 123ms | 16296 KiB | |||
25 | Elfogadva | 1/1 | 123ms | 16116 KiB | |||
26 | Elfogadva | 1/1 | 123ms | 16156 KiB | |||
27 | Elfogadva | 3/3 | 184ms | 36096 KiB | |||
28 | Elfogadva | 3/3 | 188ms | 36160 KiB | |||
29 | Elfogadva | 3/3 | 166ms | 36044 KiB | |||
30 | Elfogadva | 3/3 | 177ms | 36008 KiB | |||
31 | Elfogadva | 3/3 | 181ms | 36092 KiB | |||
32 | Elfogadva | 3/3 | 159ms | 36108 KiB | |||
33 | Elfogadva | 4/4 | 71ms | 20304 KiB | |||
34 | Elfogadva | 4/4 | 108ms | 21196 KiB |