[Mảng 1 Chiều Cơ Bản]. Bài 12. Vị trí số lớn nhất, nhỏ nhất

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Java 2.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
28Tech
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Cho mảng số nguyên A[] gồm N phần tử, hãy tìm vị trí(bắt đầu từ 0) cuối cùng của giá trị nhỏ nhất trong mảng và vị trí đầu tiên của giá trị lớn nhất trong mảng.

Tức là nếu có nhiều số có cùng giá trị nhỏ nhất bạn phải in ra ví trí cuối cùng, và có nhiều số có cùng giá trị lớn nhất trong mảng bạn phải in ra vị trí đầu tiên lớn nhất đó.


Đầu vào

Dòng đầu tiên là số nguyên dương N

Dòng thứ 2 gồm N số nguyên viết cách nhau một vài khoảng trắng


Giới hạn

1<=N<=10^6

1<=A[i]<=10^6


Đầu ra

In trên 1 dòng 2 chỉ số mà bạn tìm được.


Ví dụ :

Input 01
9
936 234 471 168 834 82 280 674 881
Output 01
5 0

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    minhduc2803  đã bình luận lúc 19, Tháng 6, 2026, 17:53

    ý tưởng cho ae nào bí nhé: FULL AC:

    đầu tiên ae phải tạo 2 biến max và min, biến max thì cho là số bé nhất có thể như -1e6 còn min thì là lớn nhất có thể như 1e6,

    sau đó ae tạo 1 vòng lặp chạy từ đầu đến cuối mảng, ae dùng mỗi phần tử i để so với max nếu lớn hơn max thì thay vào max, còn bé hơn min thì thay vào min, sau đó ae thoát vòng lặp, tạo 2 biến là biến đầu tiên và cuối cùng hai biến này ae đặt là -1, rồi ae tạo 1 vòng lặp i mới chạy từ đầu tới cuối mảng, sau đó ae lấy từng phần tử i để so xem nó có = với max ko nếu bằng thì ae kiểm tra tiếp biến đầu tiên có bằng -1 ko nếu bằng thì gán lại cho biến đầu tiên = i; tức là vị trí của phần tử đó ae ở vòng lặp tiếp theo nó đã là bằng i rồi tức là ko == -1 cho nên ko lưu tiếp vị trí nữa; rồi ae kiểm tra tiếp i có = với min ko nếu bằng thì ae kiểm tra nếu nó lớn hơn hoặc bằng -1, thì ae gán lại cho nó thành i; vì nếu để nó == -1 thì nó sẽ chỉ lấy vị trí đầu giống biến đầu tiên thôi sẽ ko giống yêu cầu của đề bài dẫn đến bị WA nha ae, rồi ae cout ra biến cuối cùng và đầu tiên ở ngoài vòng lặp là xong nha ae.


  • 0
    Kelvin2206  đã bình luận lúc 2, Tháng 4, 2026, 10:25

    include <bits/stdc++.h>

    using namespace std;
    
    #define td typedef
    td long long ll; td long double ld; td bool bl; td char ch; td string str; td vector<ll> vi; td pair&lt;ll, ll> pi;
    
    #define pb push_back
    #define rs resize
    #define el '\n'
    
    vi a;
    
    void Solve() {
      ll n; cin >> n;
      a.rs(n); for(auto &x:a) cin >> x;
    
      ll mn=LLONG_MAX, mx=LLONG_MIN, dmn=-1, dmx=-1;
    
      for(ll i=0; i&lt;n; ++i) {
        if(a[i]<=mn) {
          mn=a[i]; dmn=i;
        }
        if(a[i]>mx) { 
          mx=a[i]; dmx=i;
        }
      }
      cout << dmn << ' ' << dmx;
    }
    
    int main() {
      ios::sync_with_stdio(0); cin.tie(nullptr);
    
      Solve();
    }
    

  • -1
    L8_DuongThanhKhiem  đã bình luận lúc 22, Tháng 11, 2025, 4:17

    Code full ac cho bạn nào cần:

    #include <bits/stdc++.h>
    using namespace std;
    
    int main(){
        int n;
        cin >> n;
        int a[n];
        int max = 0, min = 100000, imax = 0, imin = 0;
        for(int i=0; i < n; i++) cin >> a[i];
    
        for(int i=0; i < n; i++){
            if(a[i]>max){
                max=a[i];
                imax=i;
            }
            if(a[i]<=min){
                min=a[i];
                imin=i;
            }
        }
        cout << imin << " " << imax << endl;
        return 0;
    }
    

  • 0
    naipret  đã bình luận lúc 16, Tháng 9, 2025, 13:28
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int main() {
      ios::sync_with_stdio(false);
      cin.tie(nullptr);
    
      int num;
      cin >> num;
    
      vector<int> vec(num);
      for (int &ele : vec) {
        cin >> ele;
      }
    
      int last_min_idx = 0, first_max_idx = 0;
    
      for (int idx = 0; idx < num; idx++) {
        if (vec[idx] > vec[first_max_idx]) {
          first_max_idx = idx;
        }
        if (vec[idx] <= vec[last_min_idx]) {
          last_min_idx = idx;
        }
      }
    
      cout << last_min_idx << ' ' << first_max_idx;
    }
    

  • 1
    bennie15025_meow  đã bình luận lúc 31, Tháng 7, 2025, 13:31

    Code này tle 2 test nhé:

    include<bits/stdc++.h>

    using namespace std; typedef long long ll; const ll ma=1e6; vector<ll>fib(ma+5); void sang() { fib[0]=0; fib[1]=1; for(ll i=2;i<=ma;i++) fib[i]=fib[i-1]+fib[i-2]; } ll a[ma+5],n,d=0; int main() { os::syncwithstdio(0); cin.tie(nullptr); sang(); cin>>n; for(ll i=0;i<n;i++) { cin>>a[i]; ll x=count(fib.begin(),fib.end(),a[i]); if(x!=0){ cout<<a[i]<<" "; d++; } } if(d==0)cout<<"NONE"; }


  • 0
    panchi146  đã bình luận lúc 30, Tháng 7, 2025, 13:24 sửa 3

    include <bits/stdc++.h>

    using namespace std;
    
    int main(){
        int n;
        cin >> n;
        int a[n];
        int max = 0, min = 100000, imax = 0, imin = 0;
        for(int i=0; i < n; i++) cin >> a[i];
    
        for(int i=0; i < n; i++){
            if(a[i]>max){
                max=a[i];
                imax=i;
            }
            if(a[i]<=min){
                min=a[i];
                imin=i;
            }
        }
        cout << imin << " " << imax << endl;
        return 0;
    }
    

  • 1
    chau2010  đã bình luận lúc 25, Tháng 7, 2025, 7:19

    void solve() { int n,index=-1; cin>>n; vector<int> v1(n), v2; for(int&i:v1)cin>>i; v2 = v1; sort(v2.begin(), v2.end()); for(int i=0;i<n;i++) if(v1[i] == v2[0]) index = i; cout << index << ' '; for(int i=0;i<n;i++){ if(v1[i] == v2[n-1]){ cout << i; return; } }

    }
    

  • 0
    vanh14  đã bình luận lúc 9, Tháng 7, 2025, 6:20

    Làm trâu như thế này mà cũng đc AC :))

    include <algorithm>

    include <set>

    include <iostream>

    include<vector>

    include <unordered_set>

    include<math.h>

    include <string>

    using namespace std;

    define ll long long

    int main() { ll n; cin >> n; ll x, dem = 0, mo=0; vector<ll> a; for (ll i = 0; i < n; i++) { cin >> x; a.push_back(x); } ll max = a[0]; ll min = a[1]; for (ll k = 0; k < n; k++) { if(a[k]>max){ max = a[k];

        }
        if (a[k] < min) {
            min = a[k];
        }
    }
    for (ll k = 0; k < n; k++) {
        if (a[k] == min) {
            dem++;
        }
    }
    for (ll k = 0; k < n; k++) {
        if (a[k] == min) {
            mo++;
            if (mo == dem) {
                cout << k << " ";
            }
        }
    }
    for (ll k = 0; k < n; k++) {
        if (a[k] == max) {
            cout << k;
            break;
        }
    }
    return 0;
    

    }


    • 0
      bengokyeuanh99  đã bình luận lúc 9, Tháng 7, 2025, 11:05

      include <set>

      include <unordered_set>

      include <string>

      include <cmath>

      include <algorithm>

      …mà không dùng 1 cái nào 🤡 Code xấu nhưng số hưởng, miễn pass là được, còn sạch để sau kkk


  • -6
    gryphware  đã bình luận lúc 24, Tháng 11, 2024, 14:02

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -5
    ichingu  đã bình luận lúc 6, Tháng 11, 2024, 13:50

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -3
    khanhhduy_1305  đã bình luận lúc 14, Tháng 9, 2024, 3:52

    include<bits/stdc++.h>

    using namespace std; int main() { int n,x; vector<int> v; cin>>n; int maxn,minn; for(int i=0;i<n;i++) { cin>>x; v.pushback(x); } auto it=maxelement(v.begin(),v.end()); auto ki=min_element(v.begin(),v.end()); for(int i=0;i<v.size();i++) { if(v[i]==ki) minn=i; } for(int i=0;i<v.size();i++) { if(v[i]==it) {maxn=i;break;} } cout<<minn<<" "<<maxn; }


  • -15
    theguy777_jaboi  đã bình luận lúc 31, Tháng 7, 2024, 3:01

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -7
    kyvynguyen2006  đã bình luận lúc 28, Tháng 7, 2024, 6:38

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • 0
    truongkiritokun  đã bình luận lúc 13, Tháng 7, 2024, 12:32

    using System; using System.Net;

    namespace Work { internal class MainControl {

        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            string[] w = Console.ReadLine().Split(' ');
            int[] p = new int[n];
            for (int i = 0; i < n; i++)
            {
                p[i] = int.Parse(w[i]);
            }
            solve((arr) =>
            {
                int min = int.MaxValue, idxmin = 0;
                int max = int.MinValue, idxmax = 0;
                for (int i = 0; i < arr.Length; i++)
                {
                    if(arr[i] <= min)
                    {
                        min = arr[i];
                        idxmin = i;
                    }
                    if (arr[i] > max)
                    {
                        max = arr[i];
                        idxmax = i;
                    }
                }
                Console.WriteLine($"{idxmin} {idxmax}");
            }, p);
        }
        static void solve(Action<int[]> act, int[] a) => act(a);
    }
    

    }


  • -4
    longhk2012  đã bình luận lúc 12, Tháng 7, 2024, 6:14

    .


    • -5
      longhk2012  đã bình luận lúc 12, Tháng 7, 2024, 6:14

      Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


      • -2
        kytoLam  đã bình luận lúc 21, Tháng 7, 2024, 16:04

        hm,


  • -4
    hackerlo2803  đã bình luận lúc 30, Tháng 6, 2024, 17:30

    .


  • -21
    Itachi  đã bình luận lúc 1, Tháng 5, 2024, 1:03

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.