QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#369185 | #5260. The Game | qq11123334# | Compile Error | / | / | C++20 | 3.8kb | 2024-03-27 21:35:15 | 2024-03-27 21:35:15 |
Judging History
This is the latest submission verdict.
- [2024-03-27 21:35:15]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2024-03-27 21:35:15]
- Submitted
answer
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
pair<int, int> diff(vector<vector<int>> &pile, int x){
int id = -1;
int mi = 10000;
if(pile[0].back() < x && mi > x - pile[0].back()){
id = 0;
mi = x - pile[0].back();
}
if(pile[1].back() < x && mi > x - pile[1].back()){
id = 1;
mi = min(mi, x - pile[1].back());
}
if(pile[2].back() > x && mi > pile[2].back() - x){
id = 2;
mi = min(mi, pile[2].back() - x);
}
if(pile[3].back() > x && mi > pile[3].back() - x){
id = 3;
mi = min(mi, pile[3].back() - x);
}
return {mi, id};
}
int put(vector<vector<int>> &pile, vector<int> &v){
//backtrack
for(int i=0;i<v.size();i++){
if(v[i] == -1) continue;
if(pile[0].back() - v[i] == 10){
pile[0].emplace_back(v[i]);
v[i] = -1;
return 0;
}
if(pile[1].back() - v[i] == 10){
pile[1].emplace_back(v[i]);
v[i] = -1;
return 1;
}
if(v[i] - pile[2].back() == 10){
pile[2].emplace_back(v[i]);
v[i] = -1;
return 2;
}
if(v[i] - pile[3].back() == 10){
pile[3].emplace_back(v[i]);
v[i] = -1;
return 3;
}
}
pair<int, int> mi = {1000, 1};
int id = -1;
for(int i=0;i<v.size();i++){
if(v[i] == -1) continue;
if(mi.first > diff(pile, v[i]).first){
mi = diff(pile, v[i]);
id = i;
}
}
if(id == -1 || mi.second == -1) return -1;
//cout<<mi.first<<" "<<mi.second<<" "<<id<<endl;
//cout<<"put("<<v[id]<<")"<<endl;
pile[mi.second].emplace_back(v[id]);
v[id] = -1;
reset(v);
return id;
}
void reset(vector<int> &v){
vector<int> tmp;
for(int i=0;i<v.size();i++){
if(v[i] == -1) continue;
tmp.emplace_back(v[i]);
}
swap(v, tmp);
}
int main(){
queue<int> q;
for(int i=0, x;i<98;i++){
cin>>x;
q.emplace(x);
}
vector<int> v;
for(int i=0;i<8;i++){
v.emplace_back(q.front());
q.pop();
}
vector<vector<int>> pile(4);
pile[0].emplace_back(1);
pile[1].emplace_back(1);
pile[2].emplace_back(100);
pile[3].emplace_back(100);
while(!q.empty()){
int res = put(pile, v);
if(res == -1) break;
put(pile, v);
if(res == -1) break;
reset(v);
v.emplace_back(q.front());
q.pop();
v.emplace_back(q.front());
q.pop();
}
reset(v);
while(put(pile, v) != -1){ reset(v); };
reset(v);
for(int i=0;i<4;i++){
for(int j=0;j<pile[i].size();j++){
cout<<pile[i][j]<<" ";
}
cout<<'\n';
}
for(int i=0;i<v.size();i++){
cout<<v[i]<<" ";
}
cout<<'\n';
while(!q.empty()){
cout<<q.front()<<" ";
q.pop();
}
cout<<'\n';
return 0;
}
详细
answer.code: In function ‘int put(std::vector<std::vector<int> >&, std::vector<int>&)’: answer.code:69:9: error: ‘reset’ was not declared in this scope 69 | reset(v); | ^~~~~