Submission #804056

#TimeUsernameProblemLanguageResultExecution timeMemory
804056fatemetmhrMonster Game (JOI21_monster)C++17
10 / 100
166 ms4472 KiB
// Be name khoda //
 
#include "monster.h"
#include <bits/stdc++.h>
 
using namespace std;
 
typedef long long ll;
 
#define all(x) x.begin(), x.end()
#define pb     push_back
#define fi     first
#define se     second
#define mp     make_pair
 
namespace {
 
const int maxn5 = 2e3 + 10;
 
int cnt[maxn5], st[maxn5][maxn5];
 
void msort(vector <int> &a){
    if(a.size() <= 1)
        return;
    if(a.size() == 3){
    }
    int pt = 0;
    vector <int> av1, av2;
    for(int i = 0; i < a.size(); i++) if(i != pt){
        if(Query(a[i], a[pt]))
            av2.pb(a[i]);
        else
            av1.pb(a[i]);
    }
    msort(av1);
    msort(av2);
    if(av1.size() && av2.size() && Query(av1.back(), av2[0]))
        swap(av1[int(av1.size()) - 1], av2[0]);
    int keep = a[pt];
    a.clear();
    for(auto u : av1)
        a.pb(u);
    a.pb(keep);
    for(auto u : av2)
        a.pb(u);
}
 
bool cmp(int i, int j){return cnt[i] < cnt[j] || (cnt[i] == cnt[j] && st[i][j]);}
 
 
}  // namespace
 
std::vector<int> Solve(int n) {
 
    vector <int> ret(n), a(n);
    for(int i = 0; i < n; i++)
        a[i] = i;
    for(int i = 0; i < n; i++) for(int j = i + 1; j < n; j++){
        st[i][j] = Query(i, j);
        st[j][i] = st[i][j] ^ 1;
    }
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++) if(i != j)
            cnt[i] += st[i][j];
    sort(all(a), cmp);
    /*
    for(int i = 0; i < n; i++)
        cout << cnt[i] << ' ';
    cout << endl;
    for(int i = 0; i < n; i++)
        cout << a[i] << ' ';
    cout << endl;
    */
    /*
    for(int i = 0; i < n; i++)
        cout << a[i] << ' ';
    cout << endl;
    */
    for(int i = 0; i < n; i++){
        ret[a[i]] = i;
    }
    return ret;
}

Compilation message (stderr)

monster.cpp: In function 'void {anonymous}::msort(std::vector<int>&)':
monster.cpp:29:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |     for(int i = 0; i < a.size(); i++) if(i != pt){
      |                    ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...