Go: package main

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

func nextInt(sc *bufio.Scanner) int {
	sc.Scan()
	i, err := strconv.Atoi(sc.Text())
	if err != nil {
		panic(err)
	}
	return i
}

func main() {
	sc := bufio.NewScanner(os.Stdin)
	sc.Split(bufio.ScanWords)

	for {
		m, nMin, nMax := nextInt(sc), nextInt(sc), nextInt(sc)
		if m == 0 && nMin == 0 && nMax == 0 {
			break
		}

		score_list := []int{}
		for i := 0; i < m; i++ {
			score_list = append(score_list, nextInt(sc))
		}

		// 最低合格者数と最高合格者数の間の各得点間のギャップが最大になる合格者数を取得する
		scoreGap := 0
		scoreGapMax := 0
		qualifiedNum := 0
		for n := nMin; n <= nMax; n++ {
			scoreGap = score_list[n-1] - score_list[n]
			if scoreGap >= scoreGapMax {
				scoreGapMax = scoreGap
				qualifiedNum = n
			}
		}

		fmt.Println(qualifiedNum)
	}
}

C++: // C++ includes used for precompiling -*- C++ -*-

// Copyright (C) 2003-2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

/** @file stdc++.h
 *  This is an implementation file for a precompiled header.
 */

// 17.4.1.2 Headers

// C
#ifndef _GLIBCXX_NO_ASSERT
#include <cassert>
#endif
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>

#if __cplusplus >= 201103L
#include <ccomplex>
#include <cfenv>
#include <cinttypes>
// #include <cstdalign>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cwchar>
#include <cwctype>
#endif

// C++
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>

#if __cplusplus >= 201103L
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#endif

using namespace std;
typedef long long ll;
#define rep(i, n) for (int i = 0; i < n; i++)

int main()
{
  int score[300];
  int m, mi, ma;
  while (1)
  {
    cin >> m >> mi >> ma;
    if (m == 0 && mi == 0 && ma == 0)break;
    rep(i, m) cin >> score[i];

    int maxScore = 0;
    int ans = 0;

    for (int i = mi - 1; i < ma; i++)
    {
      int d = abs(score[i] - score[i + 1]);
      if (d >= maxScore)
      {
        maxScore = d;
        ans = i + 1;
      }
    }
    cout << ans << endl;
  }

  return 0;
}

/*
while (1)
  {
    int a, b, c;
    cin >> a >> b >> c;
    if (a == 0 && b == 0 && c == 0)break;
    m.push_back(a);
    mi.push_back(b);
    ma.push_back(c);

    for (int i = 0; i < m[k]; i++)
    {
      cin >> score[k][i];
    }
    k++;
  }

  int p = 0;
  while (1)
  {
    int maxScore = 0;
    int ans = 0;
    // if (m[k] == 0 && mi[k] == 0 && ma[k] == 0)break;
  if(p==k){
    break;
  }

  for (int i = mi[p] - 1; i < ma[p]; i++)
  {
    int d = abs(score[p][i] - score[p][i + 1]);
    if (d >= maxScore)
    {
      maxScore = d;
      ans = i + 1;
    }
    }
    cout << ans << endl;
    p++;
  }

  int p = 0;
  while (1)
  {
    int maxScore = 0;
    int ans = 0;
    // if (m[k] == 0 && mi[k] == 0 && ma[k] == 0)break;
  if(p==k){
    break;
  }

  for (int i = mi[p] - 1; i < ma[p]; i++)
  {
    int d = abs(score[p][i] - score[p][i + 1]);
    if (d >= maxScore)
    {
      maxScore = d;
      ans = i + 1;
    }
    }
    cout << ans << endl;
    p++;
  }
 */

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];
        int b[114514];
 
        rep(i,x){
            cin>>a[i];
        }

        rep(i,z-y+1){
            b[i]=a[i+y-1]-a[i+y];
        }

        rep(i,z-y+1){
            // cout<<i<<" "<<b[i]<<endl;
        }

        int count=0;
        int tmp=0;
        int ans=0;

        for(int i=0;i<z-y+1;i++){
            if(tmp<=b[i]){
                tmp=b[i];
                ans=i+y;
            }
        }
        cout<<ans<<endl;
 
       
    //     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 <iostream>
#include <cmath>
#include <vector>
using namespace std;


int main() {
    int n, mi, ma;
    while(cin >> n >> mi >> ma, n) {
        vector<int> v(n);
        int gap=0, ans=0;
        for(int i=0; i<n; ++i) {
            cin >> v[i];
        }
        
        for(int i=mi-1; i<ma; ++i) {
            if(gap == v[i] - v[i+1]) {
                ans = max(ans, i+1);
            } else if(gap < v[i] - v[i+1]) {
                gap = v[i] - v[i+1];
                ans = i+1;
            }
        }
        cout << ans << endl;
    }
}

C++: #include <bits/stdc++.h>
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(m);
    for (int i = 0; i < m; i++) cin >> P.at(i);
    int ans = nmin, maxgap = 0;
    for (int i = nmin - 1; i < nmax; i++) {
      if (maxgap <= P.at(i) - P.at(i + 1)) {
        maxgap = P.at(i) - P.at(i + 1);
        ans = i + 1;
      }
    }
    cout << ans << endl;
  }
}

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

int main(){
	int m, nmax, nmin, n, a;
	while(1){
		n = 0;
		cin >> m >> nmin >> nmax;
		if(m == 0 && nmax == 0 && nmin == 0) break;
		int* p = new int[m];
		for(int i = 0; i < m; i++){
			cin >> p[i];
		}
		for(int j = nmin; j <= nmax; j++){
			if(n <= p[j-1] - p[j]){
				n = p[j-1] - p[j];
				a = j;
			}
		}
		cout << a << endl;
		delete[] p;
	}
	return 0;
}