제출 #838448

#제출 시각아이디문제언어결과실행 시간메모리
8384488pete8Jakarta Skyscrapers (APIO15_skyscraper)C++14
100 / 100
556 ms225440 KiB
#include<iostream> #include<stack> #include<map> #include<vector> #include<string> #include<unordered_map> #include <queue> #include<cstring> #include<limits.h> #include<cmath> #include<set> #include<algorithm> #include<bitset> using namespace std; #define ll long long #define f first #define endl "\n" #define s second #define pii pair<int,int> #define ppii pair<int,pii> #define pb push_back #define all(x) x.begin(),x.end() #define F(n) for(int i=0;i<n;i++) #define lb lower_bound #define p push #define fastio ios::sync_with_stdio(false);cin.tie(NULL); using namespace std; const int mxn=3*1e4,mod=998244353,lg=42,root=80,inf=1e9; void setIO(string name) { ios_base::sync_with_stdio(0); cin.tie(0); freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout); } int dist[(mxn*(root+1))+10]; vector<pii>adj[(mxn*(root+1))+10]; bitset<(mxn*(root+1))+10>vis; int n,m; //make dummy node // n orginal + n node for each root(n) //node more than root id = mxn*ith+starting point void init(){ for(int i=1;i<=min(n,root);i++){ for(int j=0;j<n;j++){ adj[(mxn*i)+j].pb({j,0});//going down } for(int j=i;j<n;j++){ //buid=ld edge for each i adj[(mxn*i)+j].pb({(mxn*i)+(j-i),1}); adj[(mxn*i)+(j-i)].pb({(mxn*i)+j,1}); } } } int32_t main(){ fastio cin>>n>>m; int end; init(); fill(dist,dist+(mxn*(root+1)),inf); priority_queue<pii,vector<pii>,greater<pii>>pq; for(int i=0;i<m;i++){ int st,p;cin>>st>>p; if(i==1)end=st; if(i==0)pq.push({0,st}),dist[st]=0; if(p<=root)adj[st].pb({(p*mxn)+st,0}); else{ for(int j=1;(j*p)+st<n;j++){ adj[st].pb({(j*p)+st,j}); //adj[(j*p)+st].pb({st,j}); } for(int j=1;st-(j*p)>=0;j++){ adj[st].pb({st-(j*p),j}); //adj[st-(j*p)].pb({st,j}); } //connect normal edge } //input } //dijkstra while(!pq.empty()){ int cur=pq.top().s; pq.pop(); for(auto i:adj[cur]){ if(dist[i.f]>dist[cur]+i.s){ dist[i.f]=dist[cur]+i.s; pq.push({dist[i.f],i.f}); } } } cout<<((dist[end]==inf)?-1:dist[end]); return 0; }

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

skyscraper.cpp: In function 'void setIO(std::string)':
skyscraper.cpp:31:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |  freopen((name+".in").c_str(),"r",stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
skyscraper.cpp:32:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |  freopen((name+".out").c_str(),"w",stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
skyscraper.cpp: In function 'int32_t main()':
skyscraper.cpp:89:21: warning: 'end' may be used uninitialized in this function [-Wmaybe-uninitialized]
   89 |     cout<<((dist[end]==inf)?-1:dist[end]);
      |             ~~~~~~~~^
#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...