Submission #1204290
Source Code Expand
#include<iostream> using namespace std; #define BI ss3[t] char dc[] = {'R', 'L', 'U', 'D'}; int ddi[128] = {}; int dx[] = {0, 0, -1, 1}; int dy[] = {1, -1, 0, 0}; int h,w,k,sr,sc; int b[50][50] = {}; int o[50][50] = {}; int bd[50][50] = {}; int n; bool bi[2500] = {}; long long ss1[2500] = {}; int ssi[2500] = {}; int ssj[2500] = {}; bool ss3[2500][2500] = {}; string ss4[2500] = {}; int search(int t){ long long s = ss1[t]; if(t>0 && s == 0) return t; char f[50][50] = {}; int i = ssi[t]; int j = ssj[t]; int kt = 0; for(int k; k<2500; k++){ if(BI[k]) kt++; } if(kt == 2500) return 0; long long qs[2500] = {}; int qi[2500] = {}; int qj[2500] = {}; qs[0] = s; qi[0] = i; qj[0] = j; int qm = 1; int qmi = 1; f[i][j] = '-'; int ck = t; for(int qt=0; qt<qm; qt++){ if(qt==qmi){ ck++; qmi = qm; } s = qs[qt]; int r = qi[qt]; int c = qj[qt]; for(int di=0; di<4; di++){ char nk = dc[di]; int nr = r + dx[di]; int nc = c + dy[di]; if(b[nr][nc] < 0 || f[nr][nc]) continue; if(b[nr][nc] == 0 || BI[bd[nr][nc]]){ qs[qm] = s; qi[qm] = nr; qj[qm] = nc; f[nr][nc] = nk; qm++; continue; } long long ns = s + b[nr][nc] - o[nr][nc] * (ck+1); if(ss1[ck+1] >= ns) continue; memcpy(ss3[ck+1], BI, 2500); ss3[ck+1][bd[nr][nc]] = true; f[nr][nc] = nk; char ct = nk; int mi = nr; int mj = nc; string st = ""; while(ct != '-'){ int ndi = ddi[ct]; st = ct + st; mi -= dx[ndi]; mj -= dy[ndi]; ct = f[mi][mj]; } ss1[ck+1] = ns; ssi[ck+1] = nr; ssj[ck+1] = nc; ss4[ck+1] = st; } } return 0; } int main(){ ddi['R'] = 0; ddi['L'] = 1; ddi['U'] = 2; ddi['D'] = 3; cin >> h >> w >> k >> sr >> sc; sr--; sc--; string s; for(int i=0; i<h; i++){ cin >> s; for(int j=0; j<w; j++){ if(s[j] != '.'){ b[i][j] = -1; } } } cin >> n; for(int i=0; i<n; i++){ int r,c,f,g; cin >> r >> c >> f >> g; r--; c--; b[r][c] = f; o[r][c] = g; bd[r][c] = i; } s = ""; ss1[0] = 0; ssi[0] = sr; ssj[0] = sc; memcpy(ss3[0], bi, 2500); long long mc = 0; int mi = -1; for(int ki=0; ki<k; ki++){ if(mi+100 < ki) break; if(ss1[ki] > mc){ mc = ss1[ki]; mi = ki; } search(ki); } // cout << mi << ',' << mc << "\n"; int nmi = 2500 - mi; string r = ""; while(mi>0){ r = ss4[mi] + r; mi -= ss4[mi].size(); } cout << r; for(int i=0; i<nmi; i++){ cout << '-'; } cout << '\n'; return 0; }
Submission Info
Submission Time | |
---|---|
Task | A - Multiple Pieces |
User | iehn |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 2859 Byte |
Status | CE |
Compile Error
./Main.cpp: In function ‘int search(int)’: ./Main.cpp:70:33: error: ‘memcpy’ was not declared in this scope memcpy(ss3[ck+1], BI, 2500); ^ ./Main.cpp: In function ‘int main()’: ./Main.cpp:130:26: error: ‘memcpy’ was not declared in this scope memcpy(ss3[0], bi, 2500); ^