Submission #1050875

#TimeUsernameProblemLanguageResultExecution timeMemory
1050875AndreyMonster Game (JOI21_monster)C++17
0 / 100
53 ms424 KiB
#include "monster.h" #include<bits/stdc++.h> using namespace std; vector<int> haha(0); void dude(int l, int r) { if(l == r) { return; } int mid = (l+r)/2; dude(l,mid); dude(mid+1,r); vector<int> wow(0); int x = l,y = mid+1; for(int i = 0; i < r-l+1; i++) { if(x != mid+1 && (y == r+1 || Query(haha[y],haha[x]))) { wow.push_back(haha[x]); x++; } else { wow.push_back(haha[y]); y++; } } for(int i = 0; i < wow.size(); i++) { haha[i+l] = wow[i]; } } vector<int> Solve(int n) { for(int i = 0; i < n; i++) { haha.push_back(i); } dude(0,n-1); vector<int> ans(n); bool yeah = true; vector<bool> bruh(n); int big; for(int i = 2; i < n; i++) { if(Query(haha[0],haha[i])) { bruh[i] = true; if(!yeah) { big = i; break; } } else { if(yeah && i >= 3 && Query(haha[i-1],haha[1])) { big = i-1; yeah = false; break; } yeah = false; } } if(yeah) { if(Query(haha[n-1],haha[1])) { for(int i = 0; i < n-1; i++) { ans[haha[i]] = n-2-i; } ans[haha[n-1]] = n-1; } else { for(int i = 0; i < n; i++) { ans[haha[i]] = n-1-i; } } return ans; } int p = big-1; if(big == 2) { p = 1; for(int i = 3; i < n; i++) { if(Query(haha[1],haha[i])) { p = 0; } } } else { while(p > 1 && !bruh[p]) { p--; } if(p == 1 && Query(haha[1],haha[big])) { p--; } } for(int i = 0; i <= p; i++) { ans[haha[i]] = p-i; } for(int i = p+1; i <= big; i++) { ans[haha[i]] = big-(i-p-1); } int y = p+1,x = big+1; for(int i = big+1; i < n; i++) { if(Query(haha[y],haha[i])) { for(int j = x; j <= i; j++) { ans[haha[j]] = i-(j-x); } y = x; x = i+1; } } return ans; }

Compilation message (stderr)

monster.cpp: In function 'void dude(int, int)':
monster.cpp:26:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |     for(int i = 0; i < wow.size(); i++) {
      |                    ~~^~~~~~~~~~~~
monster.cpp: In function 'std::vector<int> Solve(int)':
monster.cpp:91:24: warning: 'big' may be used uninitialized in this function [-Wmaybe-uninitialized]
   91 |     for(int i = p+1; i <= big; i++) {
      |                      ~~^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...