제출 #870059

#제출 시각아이디문제언어결과실행 시간메모리
870059amirhoseinfar1385Jakarta Skyscrapers (APIO15_skyscraper)C++17
0 / 100
4 ms4700 KiB
#include<bits/stdc++.h> using namespace std; const unsigned short maxn=30000+10; unsigned short n,m,av,akh[maxn]; set<unsigned short>fst[maxn]; vector<unsigned short>st[maxn]; unsigned short s=0; void upd(unsigned short ind,unsigned short p){ st[ind].push_back(p); if(fst[ind].count(p)!=0){ return ; } fst[ind].insert(p); for(unsigned short i=ind-p;i>=0;i-=p){ fst[i].insert(p); } for(unsigned short i=ind+p;i<n;i+=p){ fst[i].insert(p); } } unsigned short solve(){ vector<pair<unsigned short,pair<unsigned short,unsigned short>>>di; for(auto x:st[av]){ di.push_back(make_pair(0,make_pair(av,x))); } for(unsigned short i=0;i<(unsigned short)di.size();i++){ pair<unsigned short,pair<unsigned short,unsigned short>> x=di[i]; if(x.second.first<0||x.second.first>=n){ continue; } if((unsigned short)fst[x.second.first].size()==0||fst[x.second.first].count(x.second.second)==0){ continue; } if(x.second.first==s){ return x.first; } di.push_back(make_pair(x.first+1,make_pair(x.second.first-x.second.second,x.second.second))); di.push_back(make_pair(x.first+1,make_pair(x.second.first+x.second.second,x.second.second))); fst[x.second.first].erase(x.second.second); for(auto y:st[x.second.first]){ di.push_back(make_pair(x.first+1,make_pair(x.second.first-y,y))); di.push_back(make_pair(x.first+1,make_pair(x.second.first+y,y))); fst[x.second.first].erase(y); } st[x.second.first].clear(); } return -1; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m; for(unsigned short i=0;i<m;i++){ unsigned short u,v; cin>>u>>v; upd(u,v); if(i==1){ s=u; } if(i==0){ av=u; } // if(te>1000000){ // assert(0); // } } // if(te>1000000){ // assert(0); // } cout<<solve()<<"\n"; }
#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...