Submission #894827
Source Code Expand
#pragma comment(linker, "/STACK:1024000000") #define _CRT_SECURE_NO_WARNINGS //#include "testlib.h" #include <cstdio> #include <cassert> #include <algorithm> #include <iostream> #include <memory.h> #include <string> #include <vector> #include <set> #include <map> #include <cmath> #include <bitset> #include <deque> #include <ctime> #include <stack> #include <queue> #include <fstream> #include <sstream> #include <functional> /*#ifndef room111 #include <sys/resource.h> #endif*/ #include <unordered_set> #include <unordered_map> using namespace std; //#define FILENAME "" #define mp make_pair #define all(a) a.begin(), a.end() typedef long long li; typedef long double ld; void solve(bool); void precalc(); clock_t start; //int timer = 1; int testNumber = 1; bool todo = true; bool stress = false; int main() { #ifdef room111 freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); #else //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); //freopen(FILENAME".in", "r", stdin); //freopen(FILENAME ".out", "w", stdout); #endif start = clock(); int t = 1; cout.sync_with_stdio(0); cin.tie(0); precalc(); cout.precision(10); cout << fixed; /*#ifndef room111 const rlim_t kStackSize = 128L * 1024L * 1024L; // min stack size = 64 Mb struct rlimit rl; int result; result = getrlimit(RLIMIT_STACK, &rl); if (result == 0) { if (rl.rlim_cur < kStackSize) { rl.rlim_cur = kStackSize; result = setrlimit(RLIMIT_STACK, &rl); if (result != 0) { fprintf(stderr, "setrlimit returned result = %d\n", result); } } } #endif*/ //cin >> t; int testNum = 1; while (t--) { //cerr << testNum << endl; //cout << "Case #" << testNum++ << ": "; solve(true); ++testNumber; //++timer; } #ifdef room1111 while (true) solve(false); #endif #ifdef room111 cerr << "\n\n" << (clock() - start) / 1.0 / CLOCKS_PER_SEC << "\n\n"; #endif return 0; } //BE CAREFUL: IS INT REALLY INT? //#define int li /*int pr[] = { 97, 2011 }; int mods[] = { 1000000007, 1000000009 }; const int C = 300500; int powers[2][C];*/ //int MOD = 1000000007; //int c[5010][5010]; template<typename T> T binpow(T q, T w, T mod) { if (!w) return 1 % mod; if (w & 1) return q * 1LL * binpow(q, w - 1, mod) % mod; return binpow(q * 1LL * q % mod, w / 2, mod); } /*int curMod = 1000000009; int fact[100500], revfact[100500]; int getC(int n, int k) { int res = fact[n] * revfact[n - k] % curMod * revfact[k] % curMod; return res; }*/ /*const int C = 7000500; int least_prime[C];*/ void precalc() { /*for (int i = 2; i < C; ++i) { if (!least_prime[i]) { least_prime[i] = i; for (li j = i * 1LL * i; j < C; j += i) { least_prime[j] = i; } } }*/ /*fact[0] = revfact[0] = 1; for (int i = 1; i < 100500; ++i) { fact[i] = fact[i - 1] * i % curMod; revfact[i] = binpow(fact[i], curMod - 2, curMod); }*/ /*for (int w = 0; w < 2; ++w) { powers[w][0] = 1; for (int j = 1; j < C; ++j) { powers[w][j] = (powers[w][j - 1] * 1LL * pr[w]) % mods[w]; } }*/ /*for (int i = 0; i < 5010; ++i) { c[i][i] = c[i][0] = 1; for (int j = 1; j < i; ++j) { c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % MOD; } }*/ } template<typename T> T gcd(T q, T w) { while (w) { q %= w; swap(q, w); } return q; } template<typename T> T lcm(T q, T w) { return q / gcd(q, w) * w; } //#define int li //const int mod = 1000000007; void solve(bool read) { int n, m, Q; cin >> n >> m >> Q; vector<int> a(Q); for (int i = 0; i < Q; ++i) { cin >> a[i]; --a[i]; } reverse(all(a)); vector<int> fixed; vector<int> next_pos(n); int INF = 1e9; vector<int> num_fix(m, -1); for (int i = 0; i < Q; ++i) { int cur = a[i]; if (num_fix[cur] == -1) { num_fix[cur] = fixed.size(); fixed.push_back(cur); ++next_pos[0]; continue; } int cur_pos = num_fix[cur]; int l = -1, r = n; while (l + 1 < r) { int M = (l + r) / 2; if (next_pos[M] > cur_pos) { l = M; } else { r = M; } } if (r < n && next_pos[r] == cur_pos) { ++next_pos[r]; } } vector<int> fs = fixed; for (int i = 0; i < m; ++i) { if (num_fix[i] == -1) { fs.push_back(i); } } vector<int> last; vector<char> used_last(m, false); for (int i = 0; i < next_pos[n - 1]; ++i) { last.push_back(fixed[i]); used_last[fixed[i]] = true; } for (int i = 0; i < m; ++i) { if (!used_last[i]) { last.push_back(i); } } if (last == fs) { cout << "Yes\n"; } else { cout << "No\n"; } }
Submission Info
Submission Time | |
---|---|
Task | E - LRU Puzzle |
User | Kostroma |
Language | C++14 (GCC 5.4.1) |
Score | 1200 |
Code Size | 4704 Byte |
Status | AC |
Exec Time | 21 ms |
Memory | 3312 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1200 / 1200 | ||||
Status |
|
|
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 | 3 ms | 256 KB |
0_01.txt | AC | 3 ms | 256 KB |
0_02.txt | AC | 3 ms | 256 KB |
0_03.txt | AC | 3 ms | 256 KB |
1_00.txt | AC | 3 ms | 256 KB |
1_01.txt | AC | 3 ms | 256 KB |
1_02.txt | AC | 18 ms | 2680 KB |
1_03.txt | AC | 18 ms | 2680 KB |
1_04.txt | AC | 18 ms | 2680 KB |
1_05.txt | AC | 18 ms | 2680 KB |
1_06.txt | AC | 15 ms | 3064 KB |
1_07.txt | AC | 15 ms | 3184 KB |
1_08.txt | AC | 15 ms | 3184 KB |
1_09.txt | AC | 15 ms | 3312 KB |
1_10.txt | AC | 13 ms | 1916 KB |
1_11.txt | AC | 13 ms | 1788 KB |
1_12.txt | AC | 12 ms | 1788 KB |
1_13.txt | AC | 12 ms | 1788 KB |
1_14.txt | AC | 13 ms | 1788 KB |
1_15.txt | AC | 13 ms | 1788 KB |
1_16.txt | AC | 13 ms | 1788 KB |
1_17.txt | AC | 12 ms | 1788 KB |
1_18.txt | AC | 14 ms | 2552 KB |
1_19.txt | AC | 14 ms | 1828 KB |
1_20.txt | AC | 15 ms | 2608 KB |
1_21.txt | AC | 14 ms | 2680 KB |
1_22.txt | AC | 15 ms | 2740 KB |
1_23.txt | AC | 15 ms | 2360 KB |
1_24.txt | AC | 15 ms | 2852 KB |
1_25.txt | AC | 15 ms | 2200 KB |
1_26.txt | AC | 11 ms | 640 KB |
1_27.txt | AC | 9 ms | 640 KB |
1_28.txt | AC | 11 ms | 768 KB |
1_29.txt | AC | 11 ms | 768 KB |
1_30.txt | AC | 13 ms | 2096 KB |
1_31.txt | AC | 13 ms | 2120 KB |
1_32.txt | AC | 12 ms | 1604 KB |
1_33.txt | AC | 14 ms | 1972 KB |
1_34.txt | AC | 15 ms | 1280 KB |
1_35.txt | AC | 14 ms | 1660 KB |
1_36.txt | AC | 13 ms | 1152 KB |
1_37.txt | AC | 13 ms | 1624 KB |
1_38.txt | AC | 15 ms | 2300 KB |
1_39.txt | AC | 15 ms | 2380 KB |
1_40.txt | AC | 15 ms | 2568 KB |
1_41.txt | AC | 15 ms | 2616 KB |
1_42.txt | AC | 11 ms | 640 KB |
1_43.txt | AC | 10 ms | 640 KB |
1_44.txt | AC | 11 ms | 640 KB |
1_45.txt | AC | 11 ms | 640 KB |
1_46.txt | AC | 12 ms | 1024 KB |
1_47.txt | AC | 13 ms | 1400 KB |
1_48.txt | AC | 12 ms | 1232 KB |
1_49.txt | AC | 14 ms | 2100 KB |
1_50.txt | AC | 14 ms | 768 KB |
1_51.txt | AC | 15 ms | 640 KB |
1_52.txt | AC | 14 ms | 896 KB |
1_53.txt | AC | 14 ms | 768 KB |
1_54.txt | AC | 16 ms | 2144 KB |
1_55.txt | AC | 16 ms | 1420 KB |
1_56.txt | AC | 15 ms | 2388 KB |
1_57.txt | AC | 17 ms | 2260 KB |
1_58.txt | AC | 11 ms | 640 KB |
1_59.txt | AC | 11 ms | 640 KB |
1_60.txt | AC | 11 ms | 640 KB |
1_61.txt | AC | 11 ms | 640 KB |
1_62.txt | AC | 12 ms | 1248 KB |
1_63.txt | AC | 13 ms | 2300 KB |
1_64.txt | AC | 12 ms | 1080 KB |
1_65.txt | AC | 16 ms | 1980 KB |
1_66.txt | AC | 16 ms | 1024 KB |
1_67.txt | AC | 16 ms | 1024 KB |
1_68.txt | AC | 16 ms | 1024 KB |
1_69.txt | AC | 17 ms | 1024 KB |
1_70.txt | AC | 19 ms | 2616 KB |
1_71.txt | AC | 21 ms | 2424 KB |