Submission #151866

#TimeUsernameProblemLanguageResultExecution timeMemory
151866Ruxandra985Jakarta Skyscrapers (APIO15_skyscraper)C++14
100 / 100
818 ms3948 KiB
/// cine ia tle ? eu iau tle #include <cstdio> #include <queue> #include <vector> #include <algorithm> #define DIMN 30010 using namespace std; priority_queue <pair <int,int> > h; int f[DIMN],dp[DIMN]; pair <int,int> v[DIMN]; vector <int> poz[DIMN]; int main() { FILE *fin = stdin; FILE *fout = stdout; int n,m,i,curr,add,jump,p,idx; fscanf (fin,"%d%d",&n,&m); for (i=1;i<=m;i++){ fscanf (fin,"%d%d",&v[i].first,&v[i].second); v[i].first++; poz[v[i].first].push_back(i); } for (i=1;i<=n;i++) dp[i] = 2000000000; h.push(make_pair(0,v[1].first)); dp[v[1].first] = 0; while (!h.empty()){ curr = h.top().second; h.pop(); while (f[curr] && !h.empty()){ curr = h.top().second; h.pop(); } if (h.empty() && f[curr]) break; f[curr] = 1; /// cost = dp[curr] for (i=0;i<poz[curr].size();i++){ idx = poz[curr][i]; add = v[idx].second; p = curr + add; jump = 1; while (p<=n){ if (dp[p] > dp[curr] + jump){ dp[p] = dp[curr] + jump; h.push(make_pair(-dp[p] , p)); } p+=add; jump++; } p = curr - add; jump = 1; while (p>0){ if (dp[p] > dp[curr] + jump){ dp[p] = dp[curr] + jump; h.push(make_pair(-dp[p] , p)); } p-=add; jump++; } } } if (dp[v[2].first] == 2000000000) dp[v[2].first] = -1; fprintf (fout,"%d",dp[v[2].first]); return 0; }

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:39:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (i=0;i<poz[curr].size();i++){
                  ~^~~~~~~~~~~~~~~~~
skyscraper.cpp:18:12: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     fscanf (fin,"%d%d",&n,&m);
     ~~~~~~~^~~~~~~~~~~~~~~~~~
skyscraper.cpp:20:16: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         fscanf (fin,"%d%d",&v[i].first,&v[i].second);
         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...