QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#369185#5260. The Gameqq11123334#Compile Error//C++203.8kb2024-03-27 21:35:152024-03-27 21:35:15

Judging History

This is the latest submission verdict.

  • [2024-03-27 21:35:15]
  • Judged
  • [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);
      |         ^~~~~