Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ID: mickyta1
- TASK: combo
- LANG: C++
- */
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 3 + 5;
- int A[N], B[N], C[N], n;
- set<int> visited[N];
- bool CCanOpenB(){
- for(int i = 1; i <= 3; ++i){
- int up = (n + C[i] - B[i]) % n;
- int down = (n + B[i] - C[i]) % n;
- if(up > 2 && down > 2){
- return false;
- }
- }
- return true;
- }
- int main(){
- freopen("combo.in", "r", stdin);
- freopen("combo.out", "w", stdout);
- scanf("%d", &n);
- for(int i = 1; i <= 3; ++i){
- scanf("%d", &A[i]);
- --A[i];
- }
- for(int i = 1; i <= 3; ++i){
- scanf("%d", &B[i]);
- --B[i];
- }
- int cnt = 0;
- for(int a = -2; a <= 2; ++a){
- C[1] = (n + A[1] + a) % n;
- if(visited[1].find(C[1]) != visited[1].end()){
- break;
- }
- visited[1].insert(C[1]);
- for(int b = -2; b <= 2; ++b){
- C[2] = (n + A[2] + b) % n;
- if(visited[2].find(C[2]) != visited[2].end()){
- break;
- }
- visited[2].insert(C[2]);
- for(int c = -2; c <= 2; ++c){
- C[3] = (n + A[3] + c) % n;
- if(visited[3].find(C[3]) != visited[3].end()){
- break;
- }
- visited[3].insert(C[3]);
- if(CCanOpenB()){
- ++cnt;
- }
- }
- visited[3].clear();
- }
- visited[2].clear();
- }
- int roll = min(n, 5);
- int half = roll * roll * roll;
- cout << half + half - cnt << '\n';
- fclose(stdin);
- fclose(stdout);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement