Submission #1172986

#TimeUsernameProblemLanguageResultExecution timeMemory
1172986CiprianAirplane (NOI23_airplane)C++20
22 / 100
43 ms17480 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); int n,m; cin>>n>>m; vector<int>h(n+2); for(int i=1; i<=n; i++)cin>>h[i]; vector<pair<int,int>>adj[n+2]; for(int i=0; i<m; i++){ int x,y; cin>>x>>y; int w=abs(h[x]-h[y]); adj[x].push_back({-w, y}); adj[y].push_back({-w,x}); }/*priority_queue<pair<int, int>>q; vector<int>dist(n+2, -1e9); dist[1]=0; q.push({0, 1}); vector<bool> check(n+2, false); while(!q.empty()){ auto p=q.top(); q.pop(); if(check[p.second])continue; check[p.second]=true; for(auto e: adj[p.second]){ if(dist[p.second]+e.first>dist[e.second]){ dist[e.second]=dist[p.second]+e.first; q.push({dist[e.second], e.second}); } } }cout<<-dist[n]<<endl; */ if(m==n-1){ vector<int>mx(n+2); for(int i=n; i>=1; i--){ mx[i]=max(mx[i+1], h[i]); }int indx=0; for(int i=1; i<=n; i++){ if(h[i]==mx[1]){ indx=i; break; } }int minutes=0; int r=0; for(int i=2; i<=indx; i++){ if(r+1>=h[i]){ minutes++; r=min(r+1, mx[1]); }else{ minutes+=h[i]-r; r=h[i]; } }//cout<<r<<endl; for(int i=indx+1; i<=n; i++){ r=max(r-1, mx[i]); minutes++; //cout<<r<<endl; } cout<<minutes+r<<endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...