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
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 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