CSES - BAPC 2015 - Results
Submission details
Task:The King's Walk
Sender:Antti Röyskö
Submission time:2017-10-17 17:57:07 +0300
Language:C++
Status:READY
Result:
Test results
testverdicttime
#10.38 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:38:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=0; i<l.size(); ++i){
                            ^

Code

#include <iostream>
#include <vector>
#define F first
#define S second
#define MP make_pair
using namespace std;
int T;
int N;

const int M=5318008;

int k[5050][5050];
int d[5050][5050];

vector<pair<int, int> > l;


void add(int x, int y, int kk, int dd){
  if (x<1 || y<1 || x>N || y>N) return;
  if (d[x][y]<dd) return;
  d[x][y]=dd;
  k[x][y]+=kk;
  k[x][y]%=M;
  l.push_back(MP(x, y));
}

int main(){
  cin >> T;
  for (int i=0; i<T; ++i){
    cin >> N;
    for (int i=1; i<=N; ++i) for (int j=1; j<=N; ++j){ k[i][j]=0;d[i][j]=1222333444;}
    l.clear();
    int x1, y1, x2, y2;
    cin >> x1 >> y1 >> x2 >> y2;
    k[x1][y1]=1;
    d[x1][y1]=0;
    l.push_back(MP(x1, y1));
    for (int i=0; i<l.size(); ++i){
      int x=l[i].F;
      int y=l[i].S;
      if (x==x2 && y==y2) break;
      add(x-1, y-1, k[x][y], d[x][y]+1);
      add(x-1, y, k[x][y], d[x][y]+1);
      add(x-1, y+1, k[x][y], d[x][y]+1);
      add(x, y-1, k[x][y], d[x][y]+1);
      add(x, y+1, k[x][y], d[x][y]+1);
      add(x+1, y-1, k[x][y], d[x][y]+1);
      add(x+1, y, k[x][y], d[x][y]+1);
      add(x+1, y+1, k[x][y], d[x][y]+1);
    }
    cout << k[x2][y2]<< "\n";
    
  }
}

Test details

Test 1

Verdict:

input
100
315
152 73 251 114
3201
2894 304 697 2576
...

correct output
898608
4727344
240176
248812
1744064
...

user output
(empty)