1 solutions

  • 0
    @ 2025-11-5 19:34:04

    C++ :

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    using namespace std;
    
    const int MAXN = 5, MAXW = 5;
    struct Wheel {
        int speed;
        vector<pair<int, int> > gap;
    };
    int N, flag[360];
    Wheel W[MAXN];
    
    int main()
    {
         freopen("spin.in", "r", stdin);
         freopen("spin.out", "w", stdout);
         N = MAXN;
         for (int i = 0; i < N; i++) {
              int tot_gap; scanf("%d%d", &W[i].speed, &tot_gap);
              for (int j = 0; j < tot_gap; j++) {
                   int start, len; scanf("%d%d", &start, &len);
                   W[i].gap.push_back(make_pair(start, len));
              }
         }
    
         bool find = false;
         for (int t = 0; t < 360 && !find; t++) {
              memset(flag, 0, sizeof(flag));
              for (int i = 0; i < N; i++) {
                   const int &speed = W[i].speed;
                   vector<pair<int, int> > &gap = W[i].gap;
                   for (int j = 0; j < gap.size(); j++) {
                        for (int k = 0; k <= gap[j].second; k++)
                             flag[(gap[j].first + k) % 360]++;
                        gap[j].first = (gap[j].first + speed) % 360;
                   }
              }
              for (int i = 0; i < 360; i++)
                   if (flag[i] == N) {find = true; printf("%d\n", t); break;}
         }
         if (!find) printf("none\n");
         fclose(stdin); fclose(stdout);
         return 0;
    }
    
    • 1

    Information

    ID
    19398
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By