Submission #1034215

#TimeUsernameProblemLanguageResultExecution timeMemory
1034215hhs2003Cave (IOI13_cave)C++17
0 / 100
169 ms600 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; int *keys, *myDoor, finder; struct pt { int first, second; }; #define x first #define y second void setting (vector<pt> &key) { for (auto pt : key) { keys[pt.x] = pt.y; } } int rec (vector<pt> key, int answered) { if (key.size() == 1) { if (answered != finder) key[0].y ^= 1; setting(key); return key[0].x; } int mid = key.size() - 1 >> 1; for (int i=0;i<=mid;i++) { key[i].y ^= 1; } setting(key); int ans = tryCombination(keys); if (ans == -1) ans = 5050; vector<pt> hubo; if (answered == finder) { if (ans == finder) { //변화 x for (int i=mid+1;i<key.size();i++) hubo.push_back(key[i]); } else { for (int i=0;i<=mid;i++) hubo.push_back(key[i]); } } else { if (ans == finder) { for (int i=0;i<=mid;i++) hubo.push_back(key[i]); } else { for (int i=mid+1;i<key.size();i++) hubo.push_back(key[i]); } } return rec(hubo, ans); } void exploreCave(int N) { myDoor = new int[N]; keys = new int[N]; fill(myDoor, myDoor+N, -1); for (int i=0;i<N;i++) { finder = i; vector<pt> vc; for (int j=0;j<N;j++) { if (myDoor[j] == -1) vc.push_back({j, 0}); } setting(vc); int temp = tryCombination(keys); if (temp == -1) temp = 5050; int myKey = rec(vc, temp); myDoor[myKey] = i; } answer(keys, myDoor); }

Compilation message (stderr)

cave.cpp: In function 'int rec(std::vector<pt>, int)':
cave.cpp:28:26: warning: suggest parentheses around '-' inside '>>' [-Wparentheses]
   28 |     int mid = key.size() - 1 >> 1;
      |               ~~~~~~~~~~~^~~
cave.cpp:44:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<pt>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |             for (int i=mid+1;i<key.size();i++) hubo.push_back(key[i]);
      |                              ~^~~~~~~~~~~
cave.cpp:52:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<pt>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |             for (int i=mid+1;i<key.size();i++) hubo.push_back(key[i]);
      |                              ~^~~~~~~~~~~
#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...