using
System;
using
System.Collections.Generic;
class
Program {
public
static
List<Tuple<
int
,
int
> > paint;
public
static
int
Compare(Tuple<
int
,
int
> a,
Tuple<
int
,
int
> b)
{
return
a.Item2 - (b.Item2);
}
public
static
void
countMaxPinted(
int
n)
{
List<Tuple<
int
,
int
> > V
=
new
List<Tuple<
int
,
int
> >();
for
(
int
i = 0; i < n; i++) {
if
((paint[i]).Item1 <= (paint[i]).Item2) {
V.Add(paint[i]);
}
}
V.Sort(Compare);
if
(V.Count == 0) {
Console.WriteLine(0);
return
;
}
int
t = V[0].Item1;
SortedList<Tuple<
int
,
int
>,
int
> pq
=
new
SortedList<Tuple<
int
,
int
>,
int
>();
pq.Add(V[0], 0);
for
(
int
i = 1; i < V.Count; i++) {
t += V[i].Item1;
pq.Add(V[i], i);
if
(t <= V[i].Item2) {
continue
;
}
else
{
var
temp = pq.Keys[0];
pq.RemoveAt(0);
t = t - temp.Item1;
}
}
Console.WriteLine(pq.Count);
}
static
void
Main(
string
[] args)
{
int
n = 4;
paint =
new
List<Tuple<
int
,
int
> >{
Tuple.Create(1, 19), Tuple.Create(2, 2),
Tuple.Create(4, 17), Tuple.Create(1, 1)
};
countMaxPinted(n);
}
}