fork download
  1. #include<stdio.h>
  2. #include<map>
  3. using namespace std;
  4. map<pair<int, int>, int>M;
  5. char T[256];
  6. int dx[4] = { 1,0,-1,0 };
  7. int dy[4] = { 0,1,0,-1 };
  8. int min(int a, int b) { if (a < b)return a; return b; }
  9. int main() {
  10. T['N'] = 0, T['E'] = 1, T['S'] = 2, T['W'] = 3;
  11. int n;
  12. int ans = 1e9;
  13. scanf("%d", &n);
  14. int nowx = 0, nowy = 0, nowt = 1;
  15. M[{0, 0}] = nowt;
  16. for (int i = 0; i < n; i++) {
  17. char x; int t;
  18. scanf(" %c%d", &x, &t);
  19. for (int j = 0; j < t; j++) {
  20. nowx += dx[T[x]], nowy += dy[T[x]], nowt++;
  21. if (M[{nowx, nowy}])ans = min(ans, nowt - M[{nowx, nowy}]);
  22. M[{nowx, nowy}] = nowt;
  23. }
  24. }
  25. if (ans == 1e9)ans = -1;
  26. printf("%d", ans);
  27. return 0;
  28. }
Success #stdin #stdout 0s 4384KB
stdin
6
N 10
E 2
S 3
W 4
S 5
E 8
stdout
10