Submission #151860

#TimeUsernameProblemLanguageResultExecution timeMemory
151860Ruxandra985Jakarta Skyscrapers (APIO15_skyscraper)C++14
10 / 100
19 ms17016 KiB
/// verific niste observatii #include <cstdio> #include <deque> #include <vector> #include <algorithm> #define DIM 2010 #define DIMN 30010 using namespace std; int f[DIM][DIM],dp[DIM][DIM],ch[DIMN]; pair <int,int> v[DIMN]; deque <pair <int,int> > dq; vector <int> poz[DIMN]; int main() { FILE *fin = stdin; FILE *fout = stdout; int n,m,i,curr,jump,idx,j; 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<DIM;i++) for (j=1;j<DIM;j++) dp[i][j] = 2000000000; dp[1][v[1].second] = 0; dq.push_back(make_pair(1,v[1].second)); while (!dq.empty()){ curr = dq.front().first; jump = dq.front().second; //if (curr == 3 && jump == 2) // printf ("a"); if (curr == v[2].first) break; dq.pop_front(); /// distanta minima ca sa ajungi in skyscrape ul curr cu jump if (curr + jump <= n){ /// faci o saritura /// nu schimbi if (!f[curr + jump][jump]){ f[curr+jump][jump] = 1; dp[curr + jump][jump] = 1 + dp[curr][jump]; dq.push_back(make_pair(curr+jump,jump)); } if (!ch[curr + jump]){ /// schimbi ch[curr + jump] = 1; for (i=0;i<poz[curr+jump].size();i++){ idx = poz[curr + jump][i]; if (!f[curr + jump][v[idx].second]){ f[curr + jump][v[idx].second] = 1; dp[curr + jump][v[idx].second] = 1 + dp[curr][jump]; dq.push_back(make_pair(curr+jump , v[idx].second)); } } } } if (curr - jump > 0){ /// faci o saritura /// nu schimbi if (!f[curr - jump][jump]){ f[curr - jump][jump] = 1; dp[curr - jump][jump] = 1 + dp[curr][jump]; dq.push_back(make_pair(curr-jump,jump)); } if (!ch[curr - jump]){ /// schimbi ch[curr - jump] = 1; for (i=0;i<poz[curr-jump].size();i++){ idx = poz[curr - jump][i]; if (!f[curr - jump][v[idx].second]){ f[curr - jump][v[idx].second] = 1; dp[curr - jump][v[idx].second] = 1 + dp[curr][jump]; dq.push_back(make_pair(curr-jump , v[idx].second)); } } } } } if (dq.empty()) fprintf (fout,"-1"); else fprintf (fout,"%d",dp[curr][jump]); return 0; }

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:49:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 for (i=0;i<poz[curr+jump].size();i++){
                          ~^~~~~~~~~~~~~~~~~~~~~~
skyscraper.cpp:70:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 for (i=0;i<poz[curr-jump].size();i++){
                          ~^~~~~~~~~~~~~~~~~~~~~~
skyscraper.cpp:19: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:21: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...