QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#369101#5260. The Gameqq11123334#WA 0ms3572kbC++203.7kb2024-03-27 20:35:442024-03-27 20:35:45

Judging History

This is the latest submission verdict.

  • [2024-03-27 20:35:45]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3572kb
  • [2024-03-27 20:35:44]
  • 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;
        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;
}

Details

Tip: Click on the bar to expand more detailed information

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 '