| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | 
							- package main
 
- // Pair ...
 
- type Pair struct {
 
- 	_1 int
 
- 	_2 int
 
- }
 
- // Equals ...
 
- func (p1 Pair) Equals(p2 Pair) bool {
 
- 	return p1._1 == p2._1 && p1._2 == p2._2
 
- }
 
- // PairStack ...
 
- type PairStack []Pair
 
- // Len ...
 
- func (ps PairStack) Len() int { return len(ps) }
 
- func (ps PairStack) Less(i, j int) bool {
 
- 	if ps[i]._1 == ps[j]._1 {
 
- 		return ps[i]._2 < ps[j]._2
 
- 	}
 
- 	return ps[i]._1 < ps[j]._1
 
- }
 
- func (ps PairStack) Swap(i, j int) { ps[i], ps[j] = ps[j], ps[i] }
 
- // Top ...
 
- func (ps PairStack) Top() Pair {
 
- 	return ps[len(ps)-1]
 
- }
 
- // Empty ...
 
- func (ps PairStack) Empty() bool {
 
- 	return len(ps) == 0
 
- }
 
- // Push ...
 
- func (ps *PairStack) Push(p interface{}) {
 
- 	*ps = append(*ps, p.(Pair))
 
- }
 
- // Pop ...
 
- func (ps *PairStack) Pop() interface{} {
 
- 	x := (*ps)[len(*ps)-1]
 
- 	*ps = (*ps)[:len(*ps)-1]
 
- 	return x
 
- }
 
 
  |