QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#369101 | #5260. The Game | qq11123334# | WA | 0ms | 3572kb | C++20 | 3.7kb | 2024-03-27 20:35:44 | 2024-03-27 20:35:45 |
Judging History
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;
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);
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;
}
详细
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3572kb
input:
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 1 100 100 92 93 94 95 96 97 98 9...
result:
wrong answer 1st lines differ - expected: '1 2 3 4 5 6 7 8 9 10 11 12 13 ...9 90 91 92 93 94 95 96 97 98 99', found: '1 2 3 4 5 6 7 8 9 10 11 12 13 ... 82 83 84 85 86 87 88 89 90 91 '