Go: /*
	http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1600&lang=jp
	Entrance Examination
*/

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

// 標準入力を取得するScannerのインスタンスを作成
var scanner = bufio.NewScanner(os.Stdin)

// 標準入力で各行を読み込みintとして返す

func readLine() int {
	if scanner.Scan() {
		number, _ := strconv.Atoi(scanner.Text())
		return number
	}
	return 0
}

func main() {
	// 改行から空白区切りに変更
	scanner.Split(bufio.ScanWords)

	// 0 0 0の行に到達するまでループする
	for {
		// 合格者、不合格者の境目=ギャップ
		m := readLine()   // 受験者の人数
		min := readLine() // 合格者の最小人数
		max := readLine() // 合格者の最大人数

		// 0 0 0の行に到達したのでループを抜け終了する
		if m == 0 && min == 0 && max == 0 {
			break
		}

		// 得点を格納するsliceを初期化
		ps := make([]int, 0, m)

		// sliceに得点を格納する
		for i := 0; i < m; i++ {
			ps = append(ps, readLine())
		}

		tmp := 0    // ギャップを一時的に保存
		gap := 0    // ギャップの最大値を保存
		answer := 0 // ギャップが最大になった時のindex(合格人数)を保存

		// 合格者の最小人数〜最大人数のギャップを計算する
		for i := min; i <= max; i++ {
			tmp = ps[i-1] - ps[i]

			// ギャップの最大値が更新された場合、最大値と合格人数を更新する
			// ギャップが同じ値だった場合も合格人数を更新する
			// (合格人数が多い方が優先されるので後から現れた値が優先される)
			if tmp >= gap {
				gap = tmp
				answer = i
			}
		}
		fmt.Println(answer)
	}
}

C++: #include<iostream>
using namespace std;
int main(){
  int m,n1,n2;
  cin >> m >> n1 >> n2;
  while(m||n1||n2){
    int g=n1-1;
    int i,j,k;
    int d[300]={};
    for(i=0;i<m;i++) cin >> d[i];
    for(i=n1-1;i<n2;i++) {
      if(d[i]-d[i+1]>=d[g]-d[g+1]) g=i;
      //cout << g+1 << endl;
    }
    cout << g+1 << endl;
    //cout << endl;
    cin >> m >> n1 >> n2;
  }
  return 0;
}

C++: #include <bits/stdc++.h>
#define syosu(x) fixed<<setprecision(x)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> P;
typedef pair<double,double> pdd;
typedef pair<ll,ll> pll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<double> vd;
typedef vector<vd> vvd;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<string> vs;
typedef vector<P> vp;
typedef vector<vp> vvp;
typedef vector<pll> vpll;
typedef pair<int,P> pip;
typedef vector<pip> vip;
const int inf=1<<30;
const ll INF=1ll<<60;
const double pi=acos(-1);
const double eps=1e-8;
const ll mod=1e9+7;
const int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};

int n,l,r;
vi a;

int main(){
	while(1){
		cin>>n>>l>>r;
		if(!n) break;
		a=vi(n);
		for(int i=0;i<n;i++) cin>>a[i];
		sort(a.rbegin(),a.rend());
		P p={-1,0};
		for(int i=l;i<=r;i++){
			p=max(p,{a[i-1]-a[i],i});
		}
		cout<<p.second<<endl;
	}
}

C++: #include<bits/stdc++.h>
using namespace std;


int a[10000]={};

void sw(int n){
for(int g=0;g<2*n;g++){
for(int i=0;i<n-1;i++){
if(a[i]<a[i+1]){swap(a[i],a[i+1]);}
}}}

int main(){
int m,mi,mx,al=0;
while(cin>>m){
int am;
int b[10000];
cin>>mi>>mx;
for(int h=0;h<m;h++){
cin>>a[h];
}
sw(m);
for(int i=mx;i>=mi;i--){
b[i]=a[i]-a[i-1];}
for(int q=mx;q>=mi;q--){
if(b[q]>al){al=b[q]; am=q;}
}
cout<<am<<endl;
}

return 0;
}

C++: #include"bits/stdc++.h"
#define rep(i,n) for(int i=0;i<n;i++)
typedef long long ll;
using namespace std;

int p[200];
int main(){
	int m, nmin, nmax;
	while (scanf("%d%d%d", &m, &nmin, &nmax), m){
		int n, Max = 0;
		for (int i = 0; i < m; i++)
			scanf("%d", &p[i]);
		sort(p, p + m, greater<>());
		for (int i = nmin; i <= nmax; i++){
			if (p[i - 1] - p[i]>=Max){
				Max = p[i - 1] - p[i];
				n = i;
			}
		}
		printf("%d\n", n);
	}
	return 0;
}

C++: #include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	while (true) {
		int m, nmin, nmax;
		cin >> m >> nmin >> nmax;

		if (m == 0 && nmin == 0 && nmax == 0) {
			break;
		}

		vector<int> P;

		for (int i = 0; i < m; i++) {
			int temp;
			cin >> temp;
			P.push_back(temp);
		}

		sort(P.begin(), P.end());

		int gap = 0;
		int num;

		for (int i = nmin; i <= nmax; i++) {
			if (P[m - i] - P[m - 1 - i] >= gap) {
				gap = P[m - i] - P[m - 1 - i];
				num = i;
			}
		}

		cout << num << endl;
	}

	return 0;
}

C++: #include <cstdio>
int n, l, r, p[222];
int main() {
	while (scanf("%d%d%d", &n, &l, &r), n | l | r) {
		for (int i = 0; i < n; i++) scanf("%d", &p[i]);
		int ret = 0, gap = -1;
		for (int i = l; i <= r; i++) {
			if (p[i - 1] - p[i] >= gap) ret = i, gap = p[i - 1] - p[i];
		}
		printf("%d\n", ret);
	}
	return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define REP(i,k,n) for(int i=(int)(k);i<(int)(n);i++)

#define vi vector<int>
#define pb push_back

int main(){
//    ifstream in("a_in.txt");
//    cin.rdbuf(in.rdbuf());

    int m, m_min, m_max;
    while(cin >> m >> m_min >> m_max, m) {
        int P[200];
        rep(p, m) {
            cin >> P[p];
        }

        int sabun[200];
        sabun[0] = 0;
        REP(i, 1, m) {
            sabun[i] = P[i-1] - P[i];
        }

        int s_max = 0;
        int ans = 0;
        REP(i, m_min, m_max+1) {
            if(s_max <= sabun[i]) {
                s_max = sabun[i];
                ans = i;
            }
        }

        cout << ans << endl;
    }

    return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
#define REP(i,b,e) for(int i=(b);i<(e);++i)
#define rep(i,e) for(int i=0;i<(e);++i)

int main() {
  int m, n1, n2;
  while(cin >> m >> n1 >> n2){
    if(m==0) return 0;
    vector<int> v(m);
    rep(i, m) cin >> v[i];
    sort(v.begin(), v.end(), greater<int>());
    int gap=0, ans;
    REP(i, n1-1, n2){
      int t = v[i]-v[i+1];
      if(gap<=t){
        gap = t;
        ans = i+1;
      }
    }
    cout << ans << endl;
  }
  return 0;
}

C++: #include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
#include <set>

#define REP(i,k,n) for(int i=k;i<n;i++)
#define rep(i,n) for(int i=0;i<n;i++)
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++)
#define INF 1<<30
#define mp make_pair

using namespace std;
typedef long long ll;
typedef pair<int,int> P;

int main() {
	int n, a, b;
	while(cin >> n >> a >> b) {
		if(n == 0 && a == 0 && b == 0) break;

		vector<int> v(n);
		rep(i, n) cin >> v[i];
		v.push_back(v[n-1]);

		int ans = 0, id = 0;
		REP(i, a, b + 1) {
			if(ans <= v[i-1] - v[i]) {
				ans = v[i-1] - v[i];
				id = i;
			}
		}

		cout << id << endl;
	}
	return 0;
}

C++: #include<bits/stdc++.h>
using namespace std;
int main(){
  int m,s,g,p[200];
  while(cin>>m>>s>>g,m){
    int ans=-1,an;
    for(int i=0;i<m;i++)cin>>p[i];
    sort(p,p+m,greater<int>());
    for(int i=g;i>=s;i--)if(ans<p[i-1]-p[i])ans=p[i-1]-p[i],an=i;
    cout<<an<<endl;
  }
  return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;

using VI = vector<long>;

int main() {
  int m, nmin, nmax;
  while (1) {
    cin >> m >> nmin >> nmax;
    if (m) {
      VI ps;
      for (int i = 0; i < m; i++) {
        long p;
        cin >> p;
        ps.push_back(p);
      }
      long n;
      long maxgap = 0;
      for (int i = nmin; i <= nmax; i++) {
        assert(i - 1 >= 0);
        assert(i < m);
        long gap = ps[i - 1] - ps[i];
        if (gap >= maxgap) {
          maxgap = gap;
          n = i;
        }
      }
      cout << n << endl;
    } else {
      return 0;
    }
  }
}

C++: #include<bits/stdc++.h>
using namespace std;
int m,a,b,p[205],c,d;

int main(){
  while(1){
    cin>>m>>a>>b;
    if(!m&&!a&&!b)break;
    c=d=0;
    for(int i=0;i<m;i++)cin>>p[i];
    for(int i=b-1;i>=a-1;i--)
      if(p[i]-p[i+1]>c)c=p[i]-p[i+1],d=i+1;
    cout<<d<<endl;
  }
  return 0;
}

C++: #include<bits/stdc++.h>
using namespace std;
int main(){
  int a,b,c;
  while(cin>>a>>b>>c,a){
    int p[a];
    for(int i=0;i<a;++i) cin>>p[i];
    sort(p,p+a);
    int x=0, y;
    for(int i=a-b;i>=a-c;--i)
      if(p[i]-p[i-1]>=x) x=p[i]-p[i-1], y=i;
    cout<<a-y<<endl;
  }
  return 0;
}