Submission #803236

#TimeUsernameProblemLanguageResultExecution timeMemory
803236Username4132The Big Prize (IOI17_prize)C++14
100 / 100
48 ms3528 KiB
#include "prize.h" #include<iostream> #include<vector> #include<algorithm> using namespace std; using pii = pair<int, int>; #define forn(i, n) for(int i=0; i<(int)n; ++i) #define PB push_back #define F first #define S second const int MAXN = 200010; int n, can=-1, offset[MAXN], sum; pii info[MAXN]; vector<int> values, obt; pii myask(int i){ if(info[i].F==-1){ vector<int> ret = ask(i); info[i] = {ret[0], ret[1]}; } return info[i]; } bool dfs(int l, int r, int x, int y){ if(l==r || x+y==sum) return true; int mid = (l+r)>>1, mn=n+2, mx=-1, lx, ly, cnt=0, lst=mid; forn(i, r-l){ int pt = mid + offset[i]; lst=pt; mn = min(mn, pt); mx = max(mx, pt); pii res = myask(values[pt]); lx=res.F, ly=res.S; if(res.F + res.S > sum){ sum = res.F + res.S; can = values[pt]; return false; } if(res.F + res.S < sum) obt.PB(values[pt]); if(res.F + res.S == sum) break; ++cnt; } int x2=lx, y2=ly; if(lst>mid) y2+=cnt; else x2+=cnt; if(!dfs(l, mn, x, y2)) return false; if(!dfs(mx+1, r, x2, y)) return false; return true; } int find_best(int N) { n=N; values.resize(n); forn(i, n) info[i]={-1, -1}, values[i]=i; forn(i, n) offset[i]=(i&1? -((i+1)>>1) : ((i+1)>>1)); while(values.size()>1){ sum = -1; while(!dfs(0, values.size(), 0, 0)){ obt.clear(); if(sum==0) return can; } swap(values, obt); obt.clear(); sort(values.begin(), values.end()); } return values.front(); }

Compilation message (stderr)

prize.cpp: In function 'bool dfs(int, int, int, int)':
prize.cpp:26:14: warning: 'x2' may be used uninitialized in this function [-Wmaybe-uninitialized]
   26 |  if(l==r || x+y==sum) return true;
      |             ~^~
prize.cpp:49:9: warning: 'ly' may be used uninitialized in this function [-Wmaybe-uninitialized]
   49 |  if(!dfs(l, mn, x, y2)) return false;
      |      ~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...