Submission #897653


Source Code Expand

#include <cstdio>
#include <algorithm>
using namespace std;

int main() {
  int N, M, Q; scanf("%d%d%d", &N, &M, &Q);
  static pair<int,int> queries[100000];
  for(int i = 0; i < Q; ++i) {
    scanf("%d", &queries[i].first); --queries[i].first;
    queries[i].second = i;
  }
  sort(queries, queries+Q);
  // printf("queries = ");
  // for(int i = 0; i < Q; ++i) {
  //   printf("(%d, %d), ", queries[i].first, queries[i].second);
  // }
  // printf("\n");
  static int qidx[100001];
  {
    int i = 0;
    for(int j = 0; j <= M; ++j) {
      while(i < Q && queries[i].first < j) ++i;
      qidx[j] = i;
    }
  }
  // printf("qidx = ");
  // for(int i = 0; i <= M; ++i) {
  //   printf("%d, ", qidx[i]);
  // }
  // printf("\n");
  static int lru_seq[100000];
  for(int i = 0; i < M; ++i) {
    lru_seq[i] = i;
  }
  sort(lru_seq, lru_seq+M, [&](int x, int y) -> bool {
      int xx = (qidx[x] == qidx[x+1]) ? ~x : queries[qidx[x+1]-1].second;
      int yy = (qidx[y] == qidx[y+1]) ? ~y : queries[qidx[y+1]-1].second;
      return xx < yy;
  });
  // printf("lru_seq = ");
  // for(int i = 0; i < M; ++i) {
  //   printf("%d, ", lru_seq[i]);
  // }
  // printf("\n");
  int max_ign = 1;
  while(max_ign < M && lru_seq[max_ign] <= lru_seq[max_ign-1]) ++max_ign;
  // printf("max_ign = %d\n", max_ign);
  static int max_times[100000];
  fill(max_times, max_times+N, Q);
  for(int i = M-1; i >= max_ign; --i) {
    int j = qidx[lru_seq[i]+1]-1;
    int min_j = qidx[lru_seq[i]];
    for(int k = 0; k < N; ++k) {
      while(j >= min_j && queries[j].second > max_times[k]) --j;
      if(j < min_j) {
        printf("No\n");
        return 0;
      }
      max_times[k] = queries[j].second;
      // printf("i=%d: max_times[%d] = %d\n", i, k, max_times[k]);
      --j;
    }
  }
  printf("Yes\n");
  return 0;
}

Submission Info

Submission Time
Task E - LRU Puzzle
User qnighy
Language C++14 (GCC 5.4.1)
Score 1200
Code Size 1874 Byte
Status AC
Exec Time 34 ms
Memory 2176 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:6:43: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   int N, M, Q; scanf("%d%d%d", &N, &M, &Q);
                                           ^
./Main.cpp:9:35: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &queries[i].first); --queries[i].first;
                                   ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1200 / 1200
Status
AC × 4
AC × 76
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt, 1_36.txt, 1_37.txt, 1_38.txt, 1_39.txt, 1_40.txt, 1_41.txt, 1_42.txt, 1_43.txt, 1_44.txt, 1_45.txt, 1_46.txt, 1_47.txt, 1_48.txt, 1_49.txt, 1_50.txt, 1_51.txt, 1_52.txt, 1_53.txt, 1_54.txt, 1_55.txt, 1_56.txt, 1_57.txt, 1_58.txt, 1_59.txt, 1_60.txt, 1_61.txt, 1_62.txt, 1_63.txt, 1_64.txt, 1_65.txt, 1_66.txt, 1_67.txt, 1_68.txt, 1_69.txt, 1_70.txt, 1_71.txt
Case Name Status Exec Time Memory
0_00.txt AC 1 ms 128 KB
0_01.txt AC 1 ms 128 KB
0_02.txt AC 1 ms 128 KB
0_03.txt AC 1 ms 128 KB
1_00.txt AC 1 ms 128 KB
1_01.txt AC 1 ms 128 KB
1_02.txt AC 16 ms 2048 KB
1_03.txt AC 16 ms 2176 KB
1_04.txt AC 16 ms 2048 KB
1_05.txt AC 16 ms 2048 KB
1_06.txt AC 17 ms 2048 KB
1_07.txt AC 17 ms 2048 KB
1_08.txt AC 17 ms 2048 KB
1_09.txt AC 17 ms 2048 KB
1_10.txt AC 22 ms 1280 KB
1_11.txt AC 27 ms 1408 KB
1_12.txt AC 22 ms 1408 KB
1_13.txt AC 22 ms 1280 KB
1_14.txt AC 16 ms 1280 KB
1_15.txt AC 16 ms 1408 KB
1_16.txt AC 16 ms 1408 KB
1_17.txt AC 15 ms 1280 KB
1_18.txt AC 24 ms 1664 KB
1_19.txt AC 27 ms 1536 KB
1_20.txt AC 26 ms 1664 KB
1_21.txt AC 34 ms 1664 KB
1_22.txt AC 25 ms 1664 KB
1_23.txt AC 30 ms 1536 KB
1_24.txt AC 22 ms 1664 KB
1_25.txt AC 29 ms 1536 KB
1_26.txt AC 19 ms 896 KB
1_27.txt AC 18 ms 896 KB
1_28.txt AC 20 ms 1024 KB
1_29.txt AC 20 ms 1024 KB
1_30.txt AC 25 ms 1536 KB
1_31.txt AC 25 ms 1536 KB
1_32.txt AC 24 ms 1408 KB
1_33.txt AC 29 ms 1536 KB
1_34.txt AC 21 ms 1152 KB
1_35.txt AC 23 ms 1280 KB
1_36.txt AC 20 ms 1152 KB
1_37.txt AC 25 ms 1280 KB
1_38.txt AC 27 ms 1536 KB
1_39.txt AC 27 ms 1536 KB
1_40.txt AC 23 ms 1664 KB
1_41.txt AC 33 ms 1792 KB
1_42.txt AC 19 ms 896 KB
1_43.txt AC 19 ms 1024 KB
1_44.txt AC 19 ms 896 KB
1_45.txt AC 19 ms 896 KB
1_46.txt AC 20 ms 1024 KB
1_47.txt AC 22 ms 1280 KB
1_48.txt AC 21 ms 1152 KB
1_49.txt AC 25 ms 1664 KB
1_50.txt AC 19 ms 1024 KB
1_51.txt AC 19 ms 1024 KB
1_52.txt AC 19 ms 1024 KB
1_53.txt AC 19 ms 1024 KB
1_54.txt AC 22 ms 1536 KB
1_55.txt AC 21 ms 1280 KB
1_56.txt AC 25 ms 1664 KB
1_57.txt AC 25 ms 1664 KB
1_58.txt AC 17 ms 896 KB
1_59.txt AC 18 ms 896 KB
1_60.txt AC 17 ms 896 KB
1_61.txt AC 17 ms 896 KB
1_62.txt AC 20 ms 1152 KB
1_63.txt AC 23 ms 1664 KB
1_64.txt AC 17 ms 1152 KB
1_65.txt AC 26 ms 1536 KB
1_66.txt AC 16 ms 1280 KB
1_67.txt AC 17 ms 1280 KB
1_68.txt AC 17 ms 1280 KB
1_69.txt AC 17 ms 1280 KB
1_70.txt AC 20 ms 2048 KB
1_71.txt AC 26 ms 1920 KB