Submission #438287

#TimeUsernameProblemLanguageResultExecution timeMemory
438287PiejanVDC던전 (IOI21_dungeons)C++17
0 / 100
7063 ms3912 KiB
#include "dungeons.h" #include <bits/stdc++.h> using namespace std; int nnn; vector<int>sss,ppp,lll; vector<long long>winning_path; void init(int nn, vector<int> ss, vector<int> pp, vector<int> ww, vector<int> ll) { nnn=nn; sss=ss,ppp=pp,lll=ll; winning_path.resize(nnn+1); winning_path[nnn]=0; for(int i = 0 ; i < nnn ; i++) { long long next=i; long long cnt=0; while(next!=nnn) { if(winning_path[next]) { cnt+=winning_path[next]; break; } cnt++; next=ww[next]; } winning_path[i]=cnt; } } long long simulate(int x, int zz) { vector<long long>v(nnn+1,0); vector<int>seq; long long curr=0, len=0; long long z=zz; while(true) { if(v[x]) { long long ans = (sss[x]-z)/(curr-v[x]); z+=ans*(curr-v[x]); int left=0, right=seq.size()-1, use=x; while(left <= right) { int mid = (left+right)/2; if(z+(v[seq[mid]]-v[x]) >= sss[x]) { use=mid; right=mid-1; } else { left=mid+1; } } if(use>0&&use<seq.size()){ z+=v[seq[use]] - v[x]; x=seq[use]; } } if(x==nnn) return z; if(z >= sss[x]) { long long mul = sss[x]*winning_path[x]; return z+mul; } v[x]=curr; z+=ppp[x], curr+=ppp[x]; seq.push_back(x); x=lll[x]; len++; } }

Compilation message (stderr)

dungeons.cpp: In function 'long long int simulate(int, int)':
dungeons.cpp:50:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |             if(use>0&&use<seq.size()){
      |                       ~~~^~~~~~~~~~~
#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...