View difference between Paste ID: kQVK4h6E and g9ZBMKdZ
SHOW: | | - or go back to the newest paste.
1
n, s = gets.strip.split(' ')
2
n = n.to_i
3
s = s.to_i
4
5
used_start_poins = Hash.new
6
used_end_points = Hash.new
7
8
for a0 in (0..s-1)
9
  l, r = gets.strip.split(' ')
10
  l = l.to_i
11
  r = r.to_i
12
13
  sum = 0
14
  if l > 0
15
    sum += r*(r+1)/2 - (l*(l-1)/2)
16
  else
17
    sum += r*(r+1)/2
18
  end
19
20
  used_start_poins[l]=r
21
  used_end_points[r]=l
22
23
  left = l-1
24
25
  while left > 0
26
    i = used_end_points[left]
27
28
    if i
29
      left = used_start_poins[i]-1
30
    else
31
      sum += left
32
      used_start_poins[l]=l
33
      used_end_points[l]=l
34
      break
35
    end
36
  end
37
38
  right = r+1
39
40
  while right < n
41
    i = used_start_poins[right]
42
43
    if i
44
      right = used_end_points[i]+1
45
    else
46
      sum += right
47
      used_start_poins[r]=r
48
      used_end_poins[r]=r