제출 #465120

#제출 시각아이디문제언어결과실행 시간메모리
465120kilikumaAwesome Arrowland Adventure (eJOI19_adventure)C++14
100 / 100
20 ms4684 KiB
#include <bits/stdc++.h> 
using namespace std;
const int MAX_ELEMENTS = 500*500; 
char laby[500][500]; 
struct Coords {
  int lig,  col; 
}; 
bool cond =false; 
Coords cases[10][MAX_ELEMENTS]; 
Coords decal[4] =  {{0, 1}, {1, 0}, {0, -1},{-1, 0}};
int nbLigs,  nbCols; 
bool dans(int lig, int col) {
  if (lig<0||col<0||col>=nbCols||lig>=nbLigs) return false; 
  else return true; 
}
// int A
int nbCases[10]; 
void ajouter(int distance, int lig, int col) {
  int pos = nbCases[distance]; 
  cases[distance][pos].lig = lig; 
  cases[distance][pos].col = col; 
  nbCases[distance] ++; 
}
int PPC() {
  int curDist = 0; 
  int curCase; 
  ajouter(0, 0, 0); 
  while (true) {
    if (curDist > 500*500) return -1; 
    nbCases[(curDist+9)%10] = 0; 
    for (curCase = 0; curCase < nbCases[(curDist)%10]; curCase ++) {
      int curLig = cases[curDist%10][curCase].lig; 
      int curCol = cases[curDist%10][curCase].col;
 //   printf("%d %d\n",curLig, curCol); 
      
      if ((curCol == nbCols-1) && (curLig == nbLigs-1)){
        return curDist; 
      }
      if (laby[curLig][curCol] == 'X') continue; 
      int curPos; 
      if (laby[curLig][curCol] == 'E') curPos = 0; 
      if (laby[curLig][curCol] == 'S') curPos = 1; 
      if (laby[curLig][curCol] == 'W') curPos = 2; 
      if (laby[curLig][curCol] == 'N') curPos = 3; 
      int adjDist = 0;
 
      for (int dir = 0; dir < 4; dir ++) {
        
      
        int ligAdj = curLig + decal[curPos].lig;
        int colAdj = curCol + decal[curPos].col;
        if (dans(ligAdj, colAdj) && ((laby[ligAdj][colAdj] != 'X') || ((ligAdj == nbLigs-1) && (colAdj == nbCols-1)))) {
          ajouter((adjDist+curDist)%10, ligAdj, colAdj); 
         // if ((curLig == 1) && (curCol == 1))
         //  printf("%d %d %d\n", ligAdj, colAdj, adjDist); 
        } 
 
        curPos ++; 
        curPos = curPos%4; 
        adjDist ++; 
      }
      laby[curLig][curCol] = 'X';
    }
    curDist ++; 
  } 
}
int main() {
  
  cin >> nbLigs >> nbCols; 
  for (int iLig = 0; iLig < nbLigs; iLig ++) {
    string S; cin >> S; 
    for (int iCol = 0; iCol < nbCols; iCol ++) {
      laby[iLig][iCol] = S[iCol]; 
    }
  }
  printf("%d\n", PPC()); 
}

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

adventure.cpp: In function 'int PPC()':
adventure.cpp:58:16: warning: 'curPos' may be used uninitialized in this function [-Wmaybe-uninitialized]
   58 |         curPos ++;
      |         ~~~~~~~^~
#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...