Submission #887125

#TimeUsernameProblemLanguageResultExecution timeMemory
887125MilosMilutinovicWorm Worries (BOI18_worm)C++14
0 / 100
0 ms344 KiB
/* https://boi2018.progolymp.se/spoiler-day1.pdf */ #include <bits/stdc++.h> using namespace std; #define rep(i,a,n) for (int i=a;i<n;i++) #define per(i,a,n) for (int i=n-1;i>=a;i--) #define pb push_back #define eb emplace_back #define mp make_pair #define all(x) (x).begin(),(x).end() #define fi first #define se second #define SZ(x) ((int)(x).size()) typedef vector<int> VI; typedef basic_string<int> BI; typedef long long ll; typedef pair<int,int> PII; typedef double db; mt19937 mrand(random_device{}()); const ll mod=998244353; int rnd(int x) { return mrand() % x;} ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;} ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;} // head int n,m,k,q; map<array<int,3>,int> val; int ask(int x,int y,int z) { if (x<1||x>n||y<1||y>m||z<1||z>k) return 0; if (!val.count({x,y,z})) { printf("? %d %d %d\n",x,y,z); fflush(stdout); scanf("%d",&val[{x,y,z}]); } return val[{x,y,z}]; } bool good(int x,int y,int z){ if(x<1||x>n||y<1||y>m||z<1||z>k) return false; if (ask(x,y,z)<ask(x+1,y,z)) return false; if (ask(x,y,z)<ask(x,y+1,z)) return false; if (ask(x,y,z)<ask(x,y,z+1)) return false; if (ask(x,y,z)<ask(x-1,y,z)) return false; if (ask(x,y,z)<ask(x,y-1,z)) return false; if (ask(x,y,z)<ask(x,y,z-1)) return false; return true; } int main() { scanf("%d%d%d%d",&n,&m,&k,&q); if(m==1&&k==1) { int l=1,r=n,x=0.618*l+0.382*r,y=0.382*l+0.618*r; while (l+4<r) { if (x>=y) { x=0.618*l+0.382*r; y=0.382*l+0.618*r; if(x>=y) break; } if (ask(x,1,1)<ask(y,1,1)) { l=x+1; x=y; y=0.382*l+0.618*r; } else { r=y-1; y=x; x=0.618*l+0.382*r; } } int ans=x; rep(i,x,y+1) if (good(i,1,1)) ans=i; printf("! %d 1 1",ans); fflush(stdout); return 0; } }

Compilation message (stderr)

worm.cpp: In function 'int ask(int, int, int)':
worm.cpp:33:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |   scanf("%d",&val[{x,y,z}]);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~
worm.cpp: In function 'int main()':
worm.cpp:50:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   50 |  scanf("%d%d%d%d",&n,&m,&k,&q);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#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...