USACO: Combination Lock

时间:2024-05-01 02:36:45

长久不写算法题,这种简单题折腾了一下午。。。

 /*
 ID: yingzho2
 LANG: C++
 TASK: combo
 */
 #include <iostream>
 #include <fstream>
 #include <string>
 #include <map>
 #include <vector>
 #include <set>
 #include <algorithm>
 #include <stdio.h>
 #include <queue>
 #include <cstring>
 #include <cmath>
 #include <list>
 #include <cstdio>
 #include <cstdlib>
 #include <limits>
 #include <stack>

 using namespace std;

 ifstream fin("combo.in");
 ofstream fout("combo.out");

 int dis(int N, int a, int b) {
     if (a > b) swap(a, b);
     return min(b-a, N-b+a);
 }

 int main()
 {
     int N;
     ], b[];
     fin >> N;
     ; i < ; i++) fin >> a[i];
     ; i < ; i++) fin >> b[i];
     , N)*min(, N)*min(, N)*;
     ;
     bool flag = false;
     ; i < ; i++) {
         ) {
             sum *= N;
             flag = true;
         }
         ) {
             sum *= ( - dis(N, a[i], b[i]));
             flag = true;
         }
     }
     if (flag) ans -= sum;
     fout << ans << endl;
     ;
 }