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(){
	while(1){
		int m,nmin,nmax;
		cin>>m>>nmin>>nmax;
		if(m==0&&nmin==0&&nmax==0){
			break;
		}
		int P[200];
		for(int i=0;i<m;i++){
			cin>>P[i];
		}
		int gap=-1;
		int n=-1;
		for(int i=nmin;i<=nmax;i++){
			int g=P[i-1]-P[i];
			if(gap<=g){
				gap=g;
				n=i;
			}
		}
		cout<<n<<endl;
	}
	return 0;
}

C++: #include <iostream>
#include <cstdlib>
using namespace std;
int main(){
  int m, nmin, nmax;
  int p[201];
  int gap;
  int ans;
  while(cin>>m>>nmin>>nmax&&m&&nmin&&nmax){
    ans = -1;
    gap = -1;

    memset(p, 0, sizeof p);

    for(int i=1; i<=m; i++){
      cin >> p[i];
    }
    for(int i=nmin; i<=nmax; i++){
      if(gap<=p[i]-p[i+1]){
        gap = p[i]-p[i+1];
        ans = i;
      }
    }
    cout << ans << endl;
  }
  return 0;
}

C++: #include <bits/stdc++.h>

using namespace std;

int main(){
    int m,nmin,nmax;
    while(true){
        cin>>m>>nmin>>nmax;
        if(m==0)break;
        int cnt=0;
        int t=0;
        int gap=0;
        vector<int> p(m);
        for (int i = 0; i < m; ++i) {
            cin>>p[i];
        }
        for (int i = 0; i < m-1; ++i) {
            ++t;
            if(p[i]==p[i+1]){
                while(p[i]==p[i+1]){
                    ++i;
                    ++t;
                }
            }
            if(cnt+t<=nmax){
                if(cnt+t<=nmin||gap<=p[i]-p[i+1]){
                    cnt+=t;
                    t=0;
                    if(cnt>=nmin)gap=p[i]-p[i+1];
                }
            }
            else break;
        }
        cout<<cnt<<endl;
    }
    return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
using ll = long long;
using P = pair<ll, ll>;
const long double PI = acos(-1.0L);
ll GCD(ll a, ll b) { return b?GCD(b, a%b):a; }
ll LCM(ll a, ll b) { return a/GCD(a, b)*b; }

int m, nmin, nmax;

int main() {
    while(1) {
        cin >> m >> nmin >> nmax;
        if(m == 0 && nmin == 0 && nmax == 0) break;
        vector<int> pvec(m, 0);
        for(int i = 0; i < m; ++i) {
            cin >> pvec[i];
        }
        int ans = 0;
        int num = 0;
        for(int i = nmin; i <= nmax; ++i) {
            int pass = pvec[i-1];
            int npass = pvec[i];
            int g = pass-npass;
            if(ans <= g) {
                num = i;
                ans = g;
            }
        }
        cout << num << endl;
    }
}

C++: #include <stdio.h>

int main(){
	int m,na,nb,p[200];
	while(1){
		scanf("%d %d %d",&m,&na,&nb);
		if(!m) break;
		for(int i=0;i<m;i++)
			scanf("%d",&p[i]);
		int max=0;
		int ans;
		for(int i=na;i<=nb;i++){
			if(max<p[i]-p[i-1]){
				max=p[i]-p[i-1];
				ans=i;
			}
		}
		printf("%d\n",i);
	}
	return 0;
}

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

int main(){
	int m,n1,n2;
	cin >> m>>n1>>n2;
	while(m!=0||n1!=0||n2!=0){
	int p[m];
	for(int i = 0; i < m; i++){
		cin>>p[i];
	}
	int g = 0;
	for(int i = n1; i <= n2; i++){
		g = max(g,p[i-1]-p[i]);
	}
	for(int i = n2; i >= n1; i--){
		if(g==p[i-1]-p[i]){
			cout << i<<endl;
			break;
		}
	}
	cin >> m>>n1>>n2;
	}
	return 0;
}

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

int main() {
	int m,nmin,nmax,p[10000],ans,gyp,gyp2;
	
	for(;;){
		cin>>m>>nmin>>nmax;
		if(m==0&&nmin==0&&nmax==0)break;
		
		for(int i=0;i<m;i++){
			cin>>p[i];
			
			if(i==1){
				gyp=p[0]-p[1];
				ans=2;
			}
			
			if(i>1&&i<=nmax){
				gyp2=p[i-1]-p[i];
				if(gyp2>=gyp&&nmin<=i){
					gyp=gyp2;
					ans=i;
				}
			}
			}
			cout<<ans<<endl;
			gyp=0;
			ans=0;
		}
	
	return 0;
}

C++: #include<bits/stdc++.h>

using namespace std;

#define rep(i, n) repi(i,0,n)
#define repi(i,a,b) for(int i=(int)(a);i<(int)(b);++i)
#define pb push_back

int main(){
	int x,y,z;
	while(1){
				cin>>x>>y>>z;

		if(x==0&&y==0&&z==0)break;


		int a[114514];

		rep(i,x){
			cin>>a[i];
		}

		int count=0;
		int tmp=0;
		int ans=0;
		repi(i,y-1,z){
			// cout<<a[i]<<endl;
			// cout<<a[i+1]<<endl;
			
			if(tmp<=a[i]-a[i+1]){
				tmp=max(tmp,a[i]-a[i+1]);
				ans=i-1+y;
			}

			// cout<<"tmp:"<<tmp<<endl;
			// cout<<"ans:"<<ans<<endl;

			count++;
		}
		// cout<<count<<endl;
		// cout<<"tmp:"<<tmp<<endl;
		// cout<<"ans:"<<ans<<endl;
		if(y==1){
			cout<<ans+1<<endl;
		}else{
			cout<<ans<<endl;
		}

	}
	
}

C++: #include <bits/stdc++.h>
#define FOR(i,bg,ed) for(ll i=(bg);i<(ed);i++)
#define REP(i,n) FOR(i,0,n)
#define MOD 1000000007
//#define int long long
using namespace std;
typedef long long ll;
const int INF = 1e9;

int m, nMin, nMax;
int P[210];
pair<int, int> ans[210];

signed main()
{
    while (true) {
        cin >> m >> nMin >> nMax;
        if (m == 0 && nMin == 0 && nMax == 0) break;

        REP(i,m) cin >> P[i];
        sort(P, P + m, greater<int>());

        int idx = 0;
        for (int i=nMin; i<=nMax; i++) {
            ans[idx++] = make_pair(P[i-1] - P[i], i);
        }

        sort(ans, ans + idx);
        cout << ans[idx-1].second << endl;
    }
}

C++: #include <iostream>
#include <stdio.h>
using namespace std;

int main(){
    int m,n1,n2,a[201];
    cin >> m >> n1 >> n2; 
    do{
        int maxg=n2;
        for (int i=1;i<=m;i++)
            cin >> a[i];
        for (int i=0;i<n2-n1+1;i++){
            if (a[maxg]-a[maxg+1]<a[n2-i]-a[n2-i+1])
                maxg=n2-i;
       }
       cout << maxg << endl;
       cin >> m >> n1 >> n2; 
    }while(!(m==0 && n1==0 && n2==0));
    return 0;
}

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

#define vi vector<int>
#define pb push_back

typedef long long ll;
using namespace std;


int main(){
    int m,nmn,nmx;
    while(cin >> m >> nmn >> nmx,m) {
        int gmx = 0,mxn = 0;
        vi p;
        rep(i,m){
            int tmp;
            cin >> tmp;
            p.pb(tmp);
        }
        sort(p.begin(),p.end());
        REP(n,nmn,nmx + 1){
            if(gmx <= (abs(p[m - n] - p[m - n - 1]))) {
                gmx = abs(p[m - n ] - p[m - n - 1]);
                mxn = n;
            }
        }
        cout << mxn << endl;
    }
    return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
int main(){
    int m,min,nmax;
    while(cin >> m >> nmin >> nmax){
        if(m == 0) return 0;
        int mx = 0,ans = 0,a[m+5];
        for(int i = 1;i<=m;i++) cin >> a[i];
        for(int i = nmin;i<=nmax;i++){
            if(a[i]-a[i+1] >= mx) mx = a[i]-a[i-1],ans = i;
        }
        cout << ans << endl;
    }
}