제출 #1034089

#제출 시각아이디문제언어결과실행 시간메모리
1034089DucNguyen2007Jakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
82 ms129016 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int,int> #define pll pair<ll,ll> #define fi first #define se second const int maxN=3e4+5; const ll inf=2e18; int n,m,b[maxN+1],p[maxN+1]; namespace sub4 { const int LIMIT=4e3+5; int d[LIMIT+1][LIMIT+1]; struct node { int u,power; }; deque<node> q; vector<int> cprs; vector<pii> adj[LIMIT+1]; int nen(int x) { return lower_bound(cprs.begin(),cprs.end(),x)-cprs.begin(); } void solve() { for(int i=0;i<LIMIT;i++) { for(int j=0;j<LIMIT;j++) { d[i][j]=inf; } } for(int i=0;i<m;i++) { cprs.push_back(b[i]); } sort(cprs.begin(),cprs.end()); cprs.resize(unique(cprs.begin(),cprs.end())-cprs.begin()); for(int i=0;i<m;i++) { int x=n+nen(b[i]); adj[x].push_back({b[i],p[i]}); adj[b[i]].push_back({x,0}); } q.push_front({b[0],p[0]}); d[b[0]][p[0]]=0; while(!q.empty()) { node tmp=q.front(); q.pop_front(); int u=tmp.u,power=tmp.power; //cout<<u<<" "<<power<<'\n'; if(u==b[1]) { cout<<d[u][power]; return; } if(u<n) { if(u+power<n) { if(d[u+power][power]>d[u][power]+1) { d[u+power][power]=d[u][power]+1; q.push_back({u+power,power}); } } if(u-power>=0) { if(d[u-power][power]>d[u][power]+1) { d[u-power][power]=d[u][power]+1; q.push_back({u-power,power}); } } } for(auto i:adj[u]) { if(d[i.fi][i.se]>d[u][power]) { d[i.fi][i.se]=d[u][power]; q.push_front({i.fi,i.se}); } } } cout<<-1; } } int main() { //freopen("","r",stdin); //freopen("","w",stdout); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m; for(int i=0;i<m;i++) { cin>>b[i]>>p[i]; } sub4::solve(); }

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

skyscraper.cpp: In function 'void sub4::solve()':
skyscraper.cpp:32:25: warning: overflow in conversion from 'long long int' to 'int' changes value from '2000000000000000000' to '1321730048' [-Woverflow]
   32 |                 d[i][j]=inf;
      |                         ^~~
#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...