Submission #258417

#TimeUsernameProblemLanguageResultExecution timeMemory
258417infiniteproCave (IOI13_cave)C++17
0 / 100
708 ms532 KiB
#include<bits/stdc++.h> #include "cave.h" using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef vector<int> vi; typedef pair<int, int> ii; typedef vector<ii> vii; typedef vector<vi> vvi; typedef vector<vii> vvii; #define INF INT_MAX #define MOD 1000000007 #define all(x) x.begin(), x.end() vi good, bad, switches; vi cfrs(int l, int r, int c1, int c2){ // color all values in bad from index l->r // with color c1 and the rest with color c2. vi tmp = good; for(int x = 0; x < bad.size(); x++){ if(l <= x && x <= r) tmp[bad[x]] = c1; else tmp[bad[x]] = c2; } return tmp; } int ask(vi &tmp){ return tryCombination(tmp.data()); } void calc(int N, int x){ int l = 0, r = bad.size()-1; vi tmp = cfrs(l, r, 0, 0); int v1 = ask(tmp); int col = 0; if(v1 < x+1) col = 1; while(l < r){ int mid = (l+r)/2; tmp = cfrs(l, mid, col, col^1); v1 = ask(tmp); if(v1 == -1){ v1 = N; } if(v1 >= x+1) r = mid; else l = mid+1; } switches[bad[l]] = x; good[bad[l]] = col; bad.erase(bad.begin()+l); return; } void exploreCave(int N){ for(int x = 0; x < N; x++) bad.push_back(x); good.resize(N); switches.resize(N); for(int x = 0; x < N; x++){ calc(N, x); //for(int x = 0; x < N; x++) //cout << good[x] << " "; //cout << endl; } answer(good.data(), switches.data()); return; }

Compilation message (stderr)

cave.cpp: In function 'vi cfrs(int, int, int, int)':
cave.cpp:27:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int x = 0; x < bad.size(); x++){
                    ~~^~~~~~~~~~~~
#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...