/** * @brief Codeforces Round #283 (div. 2) b * @file b.cpp * @author mianma * @created 2014/12/19 10:50 * @edited 2014/12/19 10:50 * @type brute * @note */#include < fstream> #include <iostream> #include <cstring>using namespace std; #define max (A, b) ((a) > (b) ? (a) : (b)) #define &NBSP;MIN (a), &NBSP;B) ((a) > (b) ? (b) : (a)) #define &NBSP;ABS (a) ((a) > 0 ? (a) : (0 - (A))) # DEFINE&NBSP;CLR (VEC) memset (vec, 0, sizeof (VEC)) #ifdef debugifstream in;o fstream out; #define CIN in#define COUT out#else#define CIN cin#define cout cout#endif#define maxn 1010int n;int table[maxn];int record1[maxn];int record2[maxn];int tmp; String str;int *old_record;int *curr_record;int main (void) { ios_ Base::sync_with_stdio (0); #ifdef debug cin.open ("./in", ios::in); cout.open ("./out", ios::out); #endif CIN >> n; cin >> str; for (int i = 0; i < n; i++) table[i] = str[ i] - ' 0 '; tmp = table[0]; old_record = record1; curr_record = record2; for (int i = 0; i < n; i++) { if (Table[i] &NBSP;>=&NBSP;TMP) old_record[i] = table[i] - tmp; else old_record[i] = 10 + table[i] - tmp; } for (int i = 1; i < n; i + +) { tmp = table[n - 1]; memmove (table + 1, table, sizeof (int) * (n - 1)); table[0] = tmp; int flag = 0; /*curr < old ? 1 : 0*/ for (int j = 0; j < n; j++) { &Nbsp; if (table[j] >= tmp) curr_record[j] = table[j] - tmp; Else curr_ record[j] = 10 + table[j] - tmp; if ( 0 == flag ) { if (Curr_record[j] < old_record[j]) flag = 1; if (curr_record[j]&NBSP;>&NBSP;OLD_RECORD[J]) break; } } if ( 1 == flag) { int *swp_record = old_record; old_record = curr_record; curr_record = swp_record; } } for (int i = 0; i < n; i++) COUT << old_record[i]; cout << " \ n "; return 0;}
Codeforces Round #283 (Div. 2) b