답안 #789257

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
789257 2023-07-21T08:41:17 Z ymm Abracadabra (CEOI22_abracadabra) C++17
0 / 100
3000 ms 48348 KB
#include <bits/stdc++.h>
#define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
typedef long long ll;
typedef std::pair<int,int> pii;
using namespace std;

vector<int> shf(vector<int> vec)
{
	int n = vec.size();
	vector<int> ans;
	int p0 = 0, p1 = n/2;
	Loop (_,0,n) {
		if (p1 == n || (p0 < n/2 && vec[p0] < vec[p1]))
			ans.push_back(vec[p0++]);
		else
			ans.push_back(vec[p1++]);
	}
	return ans;
}

const int N = 1'000'010;
int ans[N];
vector<pii> Q[N];

int main()
{
	cin.tie(0) -> sync_with_stdio(false);
	int n, q;
	cin >> n >> q;
	vector<int> vec(n);
	//mt19937_64 rd(chrono::high_resolution_clock::now().time_since_epoch().count());
	//iota(vec.begin(), vec.end(), 0);
	//shuffle(vec.begin(), vec.end(), rd);
	for (int &x : vec)
		cin >> x;
	//vecs.push_back(vec);
	Loop (i,0,q) {
		int t, p;
		cin >> t >> p;
		--p;
		t = min(t, n/2);
		Q[t].push_back({p, i});
	}
	Loop (i,0,n/2) {
		for (auto [p, j] : Q[i])
			ans[j] = vec[p];
		inplace_merge(vec.data(), vec.data()+n/2, vec.data()+n);//vec = shf(vec);
	}
	for (auto [p, j] : Q[n/2])
		ans[j] = vec[p];
	Loop (i,0,q)
		cout << ans[i] << '\n';
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 184 ms 48348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3062 ms 47120 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2682 ms 28484 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 184 ms 48348 KB Output isn't correct
2 Halted 0 ms 0 KB -