Using ROW_NUMBER() analytic function you could achieve it. However, you will need to do it using a sub-query. But you could always look it different using WITH clause.
The below query would prompt you to enter the value for column a, and return you the row with maximum value of column c. The first part of the WITH clause is only to build sample data for demonstration, you only need the second part, i.e. t.
For example,
Enter value for a as 26:
SQL> WITH data AS
2 (SELECT 26 AS a, 'R' AS b, 4 AS c FROM dual
3 UNION ALL
4 SELECT 26 AS a, 'T' AS b, 5 AS c FROM dual
5 UNION ALL
6 SELECT 26 AS a, 'S' AS b, 2 AS c FROM dual
7 UNION ALL
8 SELECT 25 AS a, 'Y' AS b, 2 AS c FROM dual
9 UNION ALL
10 SELECT 25 AS a, 'U' AS b, 3 AS c FROM dual
11 UNION ALL
12 SELECT 24 AS a, 'X' AS b, 3 AS c FROM dual
13 UNION ALL
14 SELECT 22 AS a, 'Z' AS b, 3 AS c FROM dual
15 UNION ALL
16 SELECT 21 AS a, 'P' AS b, 3 AS c FROM dual
17 ),
18 t AS
19 ( SELECT a,b,c,row_number() OVER(PARTITION BY a ORDER BY c DESC) rn FROM DATA
20 )
21 SELECT a,b,c FROM t WHERE a = &1 AND rn = 1;
Enter value for 1: 26
old 21: SELECT a,b,c FROM t WHERE a = &1 AND rn = 1
new 21: SELECT a,b,c FROM t WHERE a = 26 AND rn = 1
A B C
---------- - ----------
26 T 5
Enter value for a as 25:
SQL> WITH data AS
2 (SELECT 26 AS a, 'R' AS b, 4 AS c FROM dual
3 UNION ALL
4 SELECT 26 AS a, 'T' AS b, 5 AS c FROM dual
5 UNION ALL
6 SELECT 26 AS a, 'S' AS b, 2 AS c FROM dual
7 UNION ALL
8 SELECT 25 AS a, 'Y' AS b, 2 AS c FROM dual
9 UNION ALL
10 SELECT 25 AS a, 'U' AS b, 3 AS c FROM dual
11 UNION ALL
12 SELECT 24 AS a, 'X' AS b, 3 AS c FROM dual
13 UNION ALL
14 SELECT 22 AS a, 'Z' AS b, 3 AS c FROM dual
15 UNION ALL
16 SELECT 21 AS a, 'P' AS b, 3 AS c FROM dual
17 ),
18 t AS
19 ( SELECT a,b,c,row_number() OVER(PARTITION BY a ORDER BY c DESC) rn FROM DATA
20 )
21 SELECT a,b,c FROM t WHERE a = &1 AND rn = 1;
Enter value for 1: 25
old 21: SELECT a,b,c FROM t WHERE a = &1 AND rn = 1
new 21: SELECT a,b,c FROM t WHERE a = 25 AND rn = 1
A B C
---------- - ----------
25 U 3