CodeForce 192D Demonstration

In the capital city of Berland, Bertown, demonstrations are against the recent election of the King of Berland. Berland opposition, led by Mr. Ovalny, believes that the elections were not fair enough and wants to organize a demonstration at one of the squares.

Bertown has n squares, numbered from 1 to n, they are numbered in the order of increasing distance between them and the city center. That is, square number 1 is central, and square number n is the farthest from the center. Naturally, the opposition wants to hold a meeting as close to the city center as possible (that is, they want an square with the minimum number).

There are exactly k (k < n) days left before the demonstration. Now all squares are free. But the Bertown city administration never sleeps, and the approval of an application for the demonstration threatens to become a very complex process. The process of approval lasts several days, but every day the following procedure takes place:

  • The opposition shall apply to hold a demonstration at a free square (the one which isn't used by the administration).
  • The administration tries to move the demonstration to the worst free square left. To do this, the administration organizes some long-term activities on the square, which is specified in the application of opposition. In other words, the administration starts using the square and it is no longer free. Then the administration proposes to move the opposition demonstration to the worst free square. If the opposition has applied for the worst free square then request is accepted and administration doesn't spend money. If the administration does not have enough money to organize an event on the square in question, the opposition's application is accepted. If administration doesn't have enough money to organize activity, then rest of administration's money spends and application is accepted
  • If the application is not accepted, then the opposition can agree to the administration's proposal (that is, take the worst free square), or withdraw the current application and submit another one the next day. If there are no more days left before the meeting, the opposition has no choice but to agree to the proposal of City Hall. If application is accepted opposition can reject it. It means than opposition still can submit more applications later, but square remains free.

In order to organize an event on the square i, the administration needs to spend ai bourles. Because of the crisis the administration has only b bourles to confront the opposition. What is the best square that the opposition can take, if the administration will keep trying to occupy the square in question each time? Note that the administration's actions always depend only on the actions of the opposition.


Input

The first line contains two integers n and k — the number of squares and days left before the meeting, correspondingly (1 ≤ k < n ≤ 105).

The second line contains a single integer b — the number of bourles the administration has (1 ≤ b ≤ 1018).

The third line contains n space-separated integers ai — the sum of money, needed to organise an event on square i (1 ≤ ai ≤ 109).

Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64d specifier.

Output

Print a single number — the minimum number of the square where the opposition can organize the demonstration.

Examples
Input
5 2
8
2 4 5 3 1
Output
2
Input
5 2
8
3 2 4 1 5
Output
5
Input
5 4
1000000000000000
5 4 3 2 1
Output
5
Note

In the first sample the opposition can act like this. On day one it applies for square 3. The administration has to organize an event there and end up with 3 bourles. If on the second day the opposition applies for square 2, the administration won't have the money to intervene.

In the second sample the opposition has only the chance for the last square. If its first move occupies one of the first four squares, the administration is left with at least 4 bourles, which means that next day it can use its next move to move the opposition from any square to the last one.

In the third sample administration has a lot of money, so opposition can occupy only last square.

OJ-ID:
CodeForce 192D

author:
Caution_X

date of submission:
20191017

tags:
贪心

description modelling:
n个广场,每个广场都有相应的使用费,现在反对派有m天时间,政府有k块钱,反对派想要尽可能使用点数小的广场,现在反对派每天可以申请一个广场,政府则会用手上的钱租用这个广场(除非政府没钱或者这个广场是最后一个广场),问反对派可以拿到的最好的广场。


major steps to solve it:
(1).为了结果最优,假定反对派在最后一天到来之前都挑选最贵的广场
(2).到了最后一天:从广场1开始遍历,如果我们选择的这个广场在之前还没有被使用,那么这个广场就是最优广场,如果这个广场在之前已经被使用过了,那么我们就找找有没有还没有使用过的广场(序号偏后)可以替代这个广场。

AC code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[100005],b[100005];
bool cmp(ll a,ll b)
{
    return a>b;
}
int main()
{
    ll n,m,tot;
    scanf("%lld%lld%lld",&n,&m,&tot);
    for(int i=1;i<=n;i++) {
        scanf("%lld",&a[i]);
    }
    ll sum=0;
    for(int i=1;i<n;i++) {
        b[i]=a[i];
    }
    sort(b+1,b+n,cmp);
    for(int i=1;i<m;i++) {
        sum+=b[i];
    }
    for(int i=1;i<=n;i++) {
        if(a[i]>=b[m]) {
            if(sum+b[m]>tot) {
                printf("%d\n",i);
                return 0;
            }
        }
        else if(sum+a[i]>tot){
            printf("%d\n",i);
            return 0;
        }
    }
    printf("%d\n",n);
    return 0;
}

 

posted on 2019-10-21 21:50  Caution_X  阅读(174)  评论(0编辑  收藏  举报

导航