제출 #1350767

#제출 시각아이디문제언어결과실행 시간메모리
1350767FIFI_cppExponents (BOI25_exp)C++20
0 / 100
949 ms3616 KiB
#include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
#include <cstdlib>
#include <cmath>
#include <queue>
#include <stack>
#include <deque>
#include <fstream>
#include <iterator>
#include <set>
#include <map>
#include <unordered_map>
#include <iomanip>
#include <cctype>
#include <string>
#include <cassert>
#include <set>
#include <bitset>
#include <unordered_set>
#include <numeric>

#define all(a) a.begin(), a.end()
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define pb push_back
#define ppi pair<int,pair<int,int>>
#define int int64_t

using namespace std;
//    /\_/\
//   (= ._.)
//   / >  \>
// encouraging cat
const int INF = 10000000000000000;
//const int mod = 1000000007;
const int mod = 998244353;
const int MAXN = 200005;
//ifstream fin('xor.in');
//ofstream fout('xor.out');
signed main()
{
    int n,q;
    cin >> n >> q;
    vector<int> a(n);
    for (int i = 0;i < n;i++)
    {
        cin >> a[i];
    }
    while (q--)
    {
        int l,r;
        cin >> l >> r;
        l--,r--;
        vector<int> cr;
        for (int i = l;i <= r;i++)
        {
            cr.pb(a[i]);
        }
        while (true)
        {
            int mi = INF;
            int pos = -1;
            int m = cr.size();
            for (int i = 0;i < m;i++)
            {
                if (cr[i] < mi)
                {
                    mi = cr[i];
                    pos = i;
                }
            }
            int ml = INF, mr = INF;
            if (pos > 0)
            {
                ml = cr[pos - 1];
            }
            if (pos < m - 1)
            {
                mr = cr[pos + 1];
            }
            if (ml == INF && mr == INF)
            {
                cout << mi << '\n';
                break;
            }
            if (ml < mr)
            {
                cr[pos - 1]++;
            }
            else
            {
                cr[pos + 1]++;
            }
            cr.erase(cr.begin() + pos);
            m--;
        }
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...