spoj#BARN. Barn Allocation
Barn Allocation
Farmer John recently opened up a new barn and is now accepting stall
allocation requests from the cows since some of the stalls have a
better view of the pastures.
The barn comprises N (1 <= N <= 100,000) stalls conveniently numbered
1..N; stall i has capacity C_i cows (1 <= C_i <= 100,000). Cow i
may request a contiguous interval of stalls (A_i, B_i) in which to
roam (1 <= A_i <= N; A_i <= B_i <= N), i.e., the cow would like to
wander among all the stalls in the range A_i..B_i (and the stalls
must always have the capacity for her to wander).
Given M (1 <= M <= 100,000) stall requests, determine the maximum
number of them that can be satisfied without exceeding stall
capacities.
Consider both a barn with 5 stalls that have the capacities shown
and a set cow requests:
Stall id: 1 2 3 4 5
+---+---+---+---+---+
Capacity: | 1 | 3 | 2 | 1 | 3 |
+---+---+---+---+---+
Cow 1 XXXXXXXXXXX (1, 3)
Cow 2 XXXXXXXXXXXXXXX (2, 5)
Cow 3 XXXXXXX (2, 3)
Cow 4 XXXXXXX (4, 5)
FJ can't satisfy all four cows, since there are too many requests
for stalls 3 and 4.
Noting that Cow 2 requests an interval that includes stalls 3 and
4, we test the hypothesis that cows 1, 3, and 4 can have their
requested stalls. No capacity is exceeded, so the answer for this
set of data is 3 -- three cows (1, 3, and 4) can have their requests
satisfied.
Input
* Line 1: Two space-separated integers: N and M
-
Lines 2..N+1: Line i+1 contains a single integer: C_i
-
Lines N+2..N+M+1: Line i+N+1 contains two integers: A_i and B_i</code></pre>
Output
* Line 1: The maximum number of requests that can be satisfied
Example
Input:
5 4
1
3
2
1
3
1 3
2 5
2 3
4 5
Output:
3