Pagini recente » Cod sursa (job #1318211) | Cod sursa (job #1341841) | Cod sursa (job #1278439) | Cod sursa (job #2368933) | Cod sursa (job #605584)
Cod sursa(job #605584)
# include <cstdio>
# define min(a, b) ((a) < (b) ? (a) : (b))
# define max(a, b) ((a) > (b) ? (a) : (b))
const char *FIN = "ape.in", *FOU = "ape.out" ;
const int MAX = 10005 ;
char S[MAX] ;
int P, P1x, P1y, P2x, P2y, Ar ;
int main ( void ) {
fscanf ( fopen ( FIN, "r" ) , "%d %s", &P, S ) ;
for ( int i = 1, x = 0, y = 0; i <= P; ++i ) {
int act = ( i == P ? S[0] : S[i] ), prec = S[i - 1] ;
if ( prec == 'N' ) {
if ( act == 'N' ) {
Ar -= x + 1, ++y ;
} else if ( act == 'E' ) {
++x ;
} else if ( act == 'V' ) {
Ar -= x-- + 1 ;
}
} else if ( prec == 'V' ) {
if ( act == 'N' ) {
++y ;
} else if ( act == 'V' ) {
--x ;
} else if ( act == 'S' ) {
Ar += x, --y ;
}
} else if ( prec == 'S' ) {
if ( act == 'S' ) {
Ar += x, --y ;
} else if ( act == 'V' ) {
--x ;
} else if ( act == 'E' ) {
Ar += x++ ;
}
} else {
if ( act == 'S' ) {
--y ;
} else if ( act == 'E' ) {
++x ;
} else if ( act == 'N' ) {
Ar -= x + 1, ++y ;
}
}
P1x = max ( P1x, x ), P2x = min ( P2x, x ) ;
P1y = max ( P1y, y ), P2y = min ( P2y, y ) ;
}
fprintf ( fopen ( FOU, "w" ), "%d %d %d %d", P1x - P2x - 1, P1y - P2y - 1, Ar < 0 ? 1 : 0, Ar < 0 ? -P -Ar : Ar ) ;
}