제출 #45824

#제출 시각아이디문제언어결과실행 시간메모리
45824TheDarkningJakarta Skyscrapers (APIO15_skyscraper)C++17
0 / 100
30 ms31924 KiB
/**
                  ▄█▀ ▀█▀ ▄▀▄ █▀ █▄█▄█ ▄▀▄ █▀ ▄█▀
                  <⇋⇋⇋⋛∰≓⊂(⌒,_ゝ⌒)⊃≓∰⋛⇋⇋⇋>

            ♔♕♖♗♘♙ ☜❷☞✪ ィℋ६ ≈ ᗫẵℜℵĬŊĞ ✪☜❷☞ ♚♛♜♝♞♟
            ♔♕♖♗♘♙                             ♚♛♜♝♞♟
                      ˙·٠•●♥ Ƹ̵̡Ӝ̵̨̄Ʒ ♥●•٠·˙

**/

#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <time.h>
#include <map>
#include <deque>
#include <string>
#include <memory.h>
#include <set>
#include <assert.h>

#define sz(s) s.size()
#define pb push_back
#define fr first
#define sc second
#define mk make_pair
#define all(s) s.begin(), s.end()

using namespace std;

const int N = 2e3 + 5;
const int inf = 1e9 + 7;

long long n, m, p, b, x, s, cnt, dp[ 2000 ][ 2000 ];
vector < vector < pair < int, int > > > w;

main()
{
   scanf("%d%d", &n, &m);

   w.resize( n + 1 );
   for( int i = 1; i <= n; i++ )
      w[i].resize( n + 1 );

   for( int i = 1; i < 2000; i++ )
      for( int j = 1; j < 2000; j++ )
         dp[ i ][ j ] = inf;
   for( int i = 1; i <= m; i++ )
   {
      scanf("%d%d", &p, &b);
      p++;

      if( i == 1 )
         s = p;
      if( i == 2 )
         x = p;

      cnt = 0;

      for( int j = p; j <= n; j += b )
      {
         w[ p ].pb( mk( j, cnt ) );
         cnt ++;
      }
      cnt = 0;
      for( int j = p; j > 0; j -= b )
      {
         w[ p ].pb( mk( j, cnt ) );
         cnt ++;
      }
   }
   vector < int > d( n + 1, inf ), p( n + 1 );
   d[ s ] = 0;
   set < pair < int, int > > q;

   q.insert( mk( d[s], s ) );

   while( !q.empty() )
   {
      int v = q.begin() -> sc;
      q.erase( q.begin() );

      for( auto x : w[v] )
      {
         int to = x.fr;
         if( v == to ) continue;

         if( d[ v ] + x.sc < d[ to ] )
         {
            q.erase( mk( d[ to ], to ) );
            d[ to ] = d[ v ] + x.sc;
            q.insert( mk( d[ to ], to ) );
         }
      }
   }
   cout << d[ x ];
}








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

skyscraper.cpp:39:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main()
      ^
skyscraper.cpp: In function 'int main()':
skyscraper.cpp:41:24: warning: format '%d' expects argument of type 'int*', but argument 2 has type 'long long int*' [-Wformat=]
    scanf("%d%d", &n, &m);
                  ~~    ^
skyscraper.cpp:41:24: warning: format '%d' expects argument of type 'int*', but argument 3 has type 'long long int*' [-Wformat=]
skyscraper.cpp:52:27: warning: format '%d' expects argument of type 'int*', but argument 2 has type 'long long int*' [-Wformat=]
       scanf("%d%d", &p, &b);
                     ~~    ^
skyscraper.cpp:52:27: warning: format '%d' expects argument of type 'int*', but argument 3 has type 'long long int*' [-Wformat=]
skyscraper.cpp:41:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d%d", &n, &m);
    ~~~~~^~~~~~~~~~~~~~~~
skyscraper.cpp:52:12: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
       scanf("%d%d", &p, &b);
       ~~~~~^~~~~~~~~~~~~~~~
#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...