---
# System prepended metadata

title: uva11991 - AVL 包 vector用法
tags: [STL]

---

# uva11991 - AVL 包 vector用法
###### tags: `STL`
今天寫這題 但吃了一個TLE 看到了一個寫法 

大致上就是用一顆AVL 然後節點中包vector去紀錄出現的地方

思考方向是出現的地方只會越來越後面(index)，所以用vector記錄位置，還可以用size()去拿大小

```
#include <iostream>
#include <vector>
#include <map>
int main(int argc, char const *argv[])
{
	int n, m, k, v;
	std::map<int, std::vector<int> > map;
	while(std::cin >> n >> m) {
		map.clear();
		for(int i = 0; i < n; i++) {
			std::cin >> v;
			map[v].emplace_back(i + 1);
		}
		for(int i = 0; i < m; i++) {
			std::cin >> k >> v;
			if(map[v].size() < k) std::cout << 0 << "\n";
			else std::cout << map[v][k - 1] << "\n";
		}
	}
	return 0;
}
```
2019/8/12
