제출 #879959

#제출 시각아이디문제언어결과실행 시간메모리
879959JakobZorzJakarta Skyscrapers (APIO15_skyscraper)C++14
100 / 100
618 ms4220 KiB
#include<iostream> #include<vector> #include<queue> #include<stack> #include<algorithm> #include<limits.h> #include<math.h> #include<map> #include<set> #include<unordered_map> #include<unordered_set> #include<iomanip> #include<cstring> typedef long long ll; typedef unsigned long long ull; typedef long double ld; using namespace std; //const int MOD=1e9+7; //typedef pair<ll,ll>Point; //typedef pair<ll,ll>Line; //#define x first //#define y second int n,m; int pos[30000]; int gap[30000]; vector<int>gaps[30000]; int dist[30000]; int distv[30000]; void solve(){ for(int i=0;i<30000;i++){ dist[i]=1000000; distv[i]=1000000; } cin>>n>>m; for(int i=0;i<m;i++){ cin>>pos[i]>>gap[i]; gaps[pos[i]].push_back(gap[i]); } dist[pos[0]]=0; priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>q; q.push({0,pos[0]}); while(!q.empty()){ auto [d,pos]=q.top(); q.pop(); if(d!=dist[pos]||distv[pos]==dist[pos]) continue; distv[pos]=dist[pos]; for(int g:gaps[pos]){ for(int i=1;pos+g*i<n;i++){ if(dist[pos+g*i]>dist[pos]+i){ dist[pos+g*i]=dist[pos]+i; q.push({dist[pos+g*i],pos+g*i}); } } for(int i=1;pos-g*i>=0;i++){ if(dist[pos-g*i]>dist[pos]+i){ dist[pos-g*i]=dist[pos]+i; q.push({dist[pos-g*i],pos-g*i}); } } } } int res=dist[pos[1]]; if(res==1000000) res=-1; cout<<res<<"\n"; } int main(){ ios::sync_with_stdio(false);cout.tie(NULL);cin.tie(NULL); //freopen("bank.in","r",stdin);freopen("bank.out","w",stdout); int t=1;//cin>>t; while(t--)solve(); return 0; } /* 5 3 0 2 1 1 4 1 */

컴파일 시 표준 에러 (stderr) 메시지

skyscraper.cpp: In function 'void solve()':
skyscraper.cpp:48:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   48 |         auto [d,pos]=q.top();
      |              ^
#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...