Submission #137939

#TimeUsernameProblemLanguageResultExecution timeMemory
137939BohotyMinerals (JOI19_minerals)C++14
80 / 100
268 ms13480 KiB
#include "minerals.h" //#include "grader.cpp" #pragma GCC optimize ("O3") #include<bits/stdc++.h> using namespace std; const int mxN = 2e5 + 5; int inside[mxN], tot; int get(int x){ if(inside[x]) tot--; else tot++; inside[x] ^= 1; return tot - Query(x); } void goKill(set<int> a, set<int> b, bool aInside, bool bInside){ if(a.size() == 2){ int cur = get(*a.begin()); int cur2 = get(*b.begin()); if(aInside){ if(cur == cur2){ Answer(*a.begin(),*b.begin()); Answer(*a.rbegin(),*b.rbegin()); } else { Answer(*a.begin(),*b.rbegin()); Answer(*a.rbegin(),*b.begin()); } } else { if(cur != cur2){ Answer(*a.begin(),*b.begin()); Answer(*a.rbegin(),*b.rbegin()); } else { Answer(*a.begin(),*b.rbegin()); Answer(*a.rbegin(),*b.begin()); } } return; } if(a.size() == 1){ Answer(*a.begin(), *b.begin()); return; } int sz = a.size(); set<int> x, y; int b4; for(int j = 1; j <= sz / 2; j++){ int v = *a.begin(); a.erase(v); x.insert(v); b4 = get(v); } for(auto it : b){ int v = get(it); if((!aInside && v != b4)||(aInside && v == b4)){ y.insert(it); } b4 = v; } for(auto v : y)b.erase(v); goKill(x,y,aInside^1,bInside^1); goKill(a,b,aInside,bInside^1); } void Solve(int N) { int n = N + N; set<int> a, b; int b4 = 0; for (int i = 1; i <= n; i++) { int x = get(i); if(x > b4){ a.insert(i); } else { b.insert(i); } b4 = x; } // cout << a.size() << ' ' << b.size() << '\n'; goKill(a, b, 1, 1); }

Compilation message (stderr)

minerals.cpp: In function 'void goKill(std::set<int>, std::set<int>, bool, bool)':
minerals.cpp:55:29: warning: 'b4' may be used uninitialized in this function [-Wmaybe-uninitialized]
     if((!aInside && v != b4)||(aInside && v == b4)){
        ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...