답안 #1034962

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1034962 2024-07-26T00:51:22 Z pcc Abracadabra (CEOI22_abracadabra) C++17
10 / 100
3000 ms 8276 KB
#include <bits/stdc++.h>
using namespace std;

#define pii pair<int,int>
#define fs first
#define sc second

bool same(vector<int>&a,vector<int>&b){
	assert(a.size() == b.size());
	for(int i = 0;i<a.size();i++){
		if(a[i] != b[i])return false;
	}
	return true;
}

vector<int> shuf(vector<int> &v){
	vector<int> vl,vr;
	int pl = 0,pr = 0;
	for(int i = 0;i<v.size();i++){
		if(i+i<v.size())vl.push_back(v[i]);
		else vr.push_back(v[i]);
	}
	vector<int> re;
	while(pl<vl.size()&&pr<vr.size()){
		if(vl[pl]<vr[pr])re.push_back(vl[pl++]);
		else re.push_back(vr[pr++]);
	}
	while(pl<vl.size())re.push_back(vl[pl++]);
	while(pr<vr.size())re.push_back(vr[pr++]);
	return re;
}

int N,Q;
int epo;
vector<vector<int>> all;

void check_loop(vector<int> v){
	auto vv = v;
	while(!same(v,vv = shuf(v))){
		epo++;
		vv.swap(v);
	}
	cerr<<"EPO: "<<epo<<endl;
	return;
}

int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>N>>Q;
	vector<int> v(N);
	for(int i = 0;i<N;i++)cin>>v[i];
	epo = 0;
	all.push_back(v);
	check_loop(v);
	while(!same(all.back(),v = shuf(all.back()))){
		all.push_back(v);
	}
	while(Q--){
		int t,id;
		cin>>t>>id;
		t = min(t+1,(int)all.size())-1;
		cout<<all[t][id-1]<<'\n';
	}
	return 0;
}

Compilation message

Main.cpp: In function 'bool same(std::vector<int>&, std::vector<int>&)':
Main.cpp:10:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |  for(int i = 0;i<a.size();i++){
      |                ~^~~~~~~~~
Main.cpp: In function 'std::vector<int> shuf(std::vector<int>&)':
Main.cpp:19:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |  for(int i = 0;i<v.size();i++){
      |                ~^~~~~~~~~
Main.cpp:20:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |   if(i+i<v.size())vl.push_back(v[i]);
      |      ~~~^~~~~~~~~
Main.cpp:24:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |  while(pl<vl.size()&&pr<vr.size()){
      |        ~~^~~~~~~~~~
Main.cpp:24:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |  while(pl<vl.size()&&pr<vr.size()){
      |                      ~~^~~~~~~~~~
Main.cpp:28:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |  while(pl<vl.size())re.push_back(vl[pl++]);
      |        ~~^~~~~~~~~~
Main.cpp:29:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |  while(pr<vr.size())re.push_back(vr[pr++]);
      |        ~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 125 ms 8276 KB Output is correct
2 Correct 120 ms 5204 KB Output is correct
3 Correct 140 ms 5968 KB Output is correct
4 Correct 100 ms 4208 KB Output is correct
5 Correct 116 ms 4948 KB Output is correct
6 Correct 119 ms 4432 KB Output is correct
7 Correct 130 ms 4948 KB Output is correct
8 Correct 111 ms 4480 KB Output is correct
9 Correct 116 ms 4152 KB Output is correct
10 Correct 116 ms 4432 KB Output is correct
11 Correct 124 ms 4408 KB Output is correct
12 Correct 112 ms 4180 KB Output is correct
13 Correct 111 ms 4176 KB Output is correct
14 Correct 116 ms 4692 KB Output is correct
15 Correct 120 ms 4232 KB Output is correct
16 Correct 1 ms 344 KB Output is correct
17 Correct 102 ms 4076 KB Output is correct
18 Correct 108 ms 4184 KB Output is correct
19 Correct 0 ms 344 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3062 ms 7716 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3047 ms 4084 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 125 ms 8276 KB Output is correct
2 Correct 120 ms 5204 KB Output is correct
3 Correct 140 ms 5968 KB Output is correct
4 Correct 100 ms 4208 KB Output is correct
5 Correct 116 ms 4948 KB Output is correct
6 Correct 119 ms 4432 KB Output is correct
7 Correct 130 ms 4948 KB Output is correct
8 Correct 111 ms 4480 KB Output is correct
9 Correct 116 ms 4152 KB Output is correct
10 Correct 116 ms 4432 KB Output is correct
11 Correct 124 ms 4408 KB Output is correct
12 Correct 112 ms 4180 KB Output is correct
13 Correct 111 ms 4176 KB Output is correct
14 Correct 116 ms 4692 KB Output is correct
15 Correct 120 ms 4232 KB Output is correct
16 Correct 1 ms 344 KB Output is correct
17 Correct 102 ms 4076 KB Output is correct
18 Correct 108 ms 4184 KB Output is correct
19 Correct 0 ms 344 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Execution timed out 3062 ms 7716 KB Time limit exceeded
22 Halted 0 ms 0 KB -