Submission #3770761


Source Code Expand

#include <cstdio>
#include <set>
#include <queue>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
#define REP(i, n) for(int i = 0; i < (int)(n); ++i)
typedef long long ll;

int n;
int k;
int nQuery;
int vs[2000+10];
// int ms[2000+10][2010];
// int is[2000+10][2010];

struct K {
  vector<int> sorted;
  int used = 0;
};
bool operator>(const K& k1, const K& k2) {
  return k1.sorted[0] > k2.sorted[0];
}

int main(void) {
  scanf("%d%d%d", &n, &k, &nQuery);
  set<int> ss;
  ss.insert(0);
  REP(i, n) {
    scanf("%d", &vs[i]);
    ss.insert(vs[i]);
  }

  int res = 2000000000;
  for(int v : ss) {
    priority_queue<K, vector<K>, greater<K> > q;
    { // init
      int lastOmit = -1;
      vector<int> sorted;
      REP(i, n) {
        if(vs[i] <= v) {
          K r;
          r.used = 0;
          if((int)sorted.size() >= k) {
            sort(sorted.begin(), sorted.end());
            r.sorted = sorted;
            q.push(r);
          }
          lastOmit = i;
          sorted.clear();
        } else {
          sorted.push_back(vs[i]);
        }
      }
      K r;
      r.used = 0;
      if((int)sorted.size() >= k) {
        sort(sorted.begin(), sorted.end());
        r.sorted = sorted;
        q.push(r);
      }
    }

    int maxi = -1;
    int mini = 2000000000;
    int cnt = 0;
    while(cnt < nQuery && !q.empty()) {
      K cur = q.top(); q.pop();
      int curV = cur.sorted[cur.used];
      maxi = max(maxi, curV);
      mini = min(mini, curV);
      cur.used++;
      if((int)cur.sorted.size() - cur.used >= k) {
        q.push(cur);
      }
      ++cnt;
    }
    // cerr << v << " " << mini << " " << maxi << " " << cnt << endl;
    if(cnt == nQuery) {
      int cur = maxi - mini;
      res = min(res, cur);
    } else {
      break;
    }
  }

  printf("%d\n", res);
  
  return 0;
}

Submission Info

Submission Time
Task E - Range Minimum Queries
User ush
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1940 Byte
Status WA
Exec Time 329 ms
Memory 384 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:28:35: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d%d", &n, &k, &nQuery);
                                   ^
./Main.cpp:32:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &vs[i]);
                        ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 600
Status
AC × 3
AC × 45
WA × 9
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_1_43.txt, subtask_1_44.txt, subtask_1_45.txt, subtask_1_46.txt, subtask_1_47.txt, subtask_1_48.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask_1_01.txt AC 1 ms 256 KB
subtask_1_02.txt AC 1 ms 256 KB
subtask_1_03.txt WA 82 ms 384 KB
subtask_1_04.txt AC 2 ms 256 KB
subtask_1_05.txt AC 1 ms 256 KB
subtask_1_06.txt AC 2 ms 256 KB
subtask_1_07.txt AC 20 ms 384 KB
subtask_1_08.txt AC 3 ms 384 KB
subtask_1_09.txt AC 130 ms 384 KB
subtask_1_10.txt AC 2 ms 256 KB
subtask_1_11.txt WA 21 ms 384 KB
subtask_1_12.txt WA 82 ms 384 KB
subtask_1_13.txt WA 99 ms 384 KB
subtask_1_14.txt AC 18 ms 384 KB
subtask_1_15.txt WA 16 ms 384 KB
subtask_1_16.txt AC 4 ms 384 KB
subtask_1_17.txt AC 193 ms 384 KB
subtask_1_18.txt AC 33 ms 384 KB
subtask_1_19.txt AC 118 ms 384 KB
subtask_1_20.txt AC 43 ms 384 KB
subtask_1_21.txt AC 32 ms 384 KB
subtask_1_22.txt AC 4 ms 384 KB
subtask_1_23.txt AC 38 ms 256 KB
subtask_1_24.txt AC 30 ms 384 KB
subtask_1_25.txt WA 39 ms 256 KB
subtask_1_26.txt WA 19 ms 384 KB
subtask_1_27.txt AC 2 ms 256 KB
subtask_1_28.txt AC 4 ms 256 KB
subtask_1_29.txt AC 329 ms 384 KB
subtask_1_30.txt AC 2 ms 256 KB
subtask_1_31.txt WA 21 ms 384 KB
subtask_1_32.txt WA 17 ms 384 KB
subtask_1_33.txt AC 2 ms 384 KB
subtask_1_34.txt AC 2 ms 384 KB
subtask_1_35.txt AC 3 ms 384 KB
subtask_1_36.txt AC 3 ms 384 KB
subtask_1_37.txt AC 102 ms 384 KB
subtask_1_38.txt AC 2 ms 384 KB
subtask_1_39.txt AC 8 ms 384 KB
subtask_1_40.txt AC 3 ms 384 KB
subtask_1_41.txt AC 2 ms 256 KB
subtask_1_42.txt AC 2 ms 256 KB
subtask_1_43.txt AC 2 ms 256 KB
subtask_1_44.txt AC 3 ms 256 KB
subtask_1_45.txt AC 35 ms 384 KB
subtask_1_46.txt AC 2 ms 256 KB
subtask_1_47.txt AC 2 ms 384 KB
subtask_1_48.txt AC 2 ms 384 KB