Submission #854702

# Submission time Handle Problem Language Result Execution time Memory
854702 2023-09-28T15:15:31 Z Tenis0206 Squirrel (RMI18_squirrel) C++11
25 / 100
4700 ms 60072 KB
#include <bits/stdc++.h>

using namespace std;

int dx[] = {-1,0,1,0};
int dy[] = {0,1,0,-1};

int m,n,f;

vector<pair<int,int>> l;
vector<pair<int,int>> t[15];

void solve(int x, int y, int s, int dir)
{
    for(int i=1;i<=s;i++)
    {
        int xx = x + i * dx[dir];
        int yy = y + i * dy[dir];
        l.push_back({xx,yy});
    }
    x = x + s * dx[dir];
    y = y + s * dy[dir];
    if(s==1)
    {
        return;
    }
    for(int i=1;i<=s/2;i++)
    {
        int xs = x + i * dx[dir] + i * dx[(dir + 3) % 4];
        int ys = y + i * dy[dir] + i * dy[(dir + 3) % 4];
        l.push_back({xs,ys});
    }
    solve(x + (s / 2) * dx[dir] + (s / 2) * dx[(dir + 3) % 4], y + (s / 2) * dy[dir] + (s / 2) * dy[(dir + 3) % 4], s / 2, dir);
    solve(x + (s / 2) * dx[dir] + (s / 2) * dx[(dir + 3) % 4], y + (s / 2) * dy[dir] + (s / 2) * dy[(dir + 3) % 4], s / 2, (dir + 3) % 4);
    for(int i=1;i<=s/2;i++)
    {
        int xd = x + i * dx[dir] + i * dx[(dir + 1) % 4];
        int yd = y + i * dy[dir] + i * dy[(dir + 1) % 4];
        l.push_back({xd,yd});
    }
    solve(x + (s / 2) * dx[dir] + (s / 2) * dx[(dir + 1) % 4], y + (s / 2) * dy[dir] + (s / 2) * dy[(dir + 1) % 4], s / 2, dir);
    solve(x + (s / 2) * dx[dir] + (s / 2) * dx[(dir + 1) % 4], y + (s / 2) * dy[dir] + (s / 2) * dy[(dir + 1) % 4], s / 2, (dir + 1) % 4);
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    #ifdef home
    freopen("nr.in","r",stdin);
    freopen("nr.out","w",stdout);
    #endif // home
    cin>>m>>n>>f;
    for(int p=0;p<=10;p++)
    {
        int s = (1<<p);
        l.push_back({0,0});
        solve(0,0,s,0);
        t[p] = l;
        l.clear();
    }
    int rez = 0;
    for(int i=1;i<=f;i++)
    {
        int x,y,s;
        cin>>x>>y>>s;
        int p = 0;
        while(s!=1)
        {
            ++p;
            s /= 2;
        }
        for(auto it : t[p])
        {
            rez += (__gcd(it.first + x - 1,it.second + y - 1) == 1);
        }
        l.clear();
    }
    cout<<rez<<'\n';
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 98 ms 59692 KB Output is correct
2 Correct 138 ms 58580 KB Output is correct
3 Correct 1913 ms 58336 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3225 ms 59192 KB Output is correct
2 Correct 3125 ms 59080 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 4726 ms 59596 KB Time limit exceeded
2 Execution timed out 4801 ms 59180 KB Time limit exceeded
3 Execution timed out 4743 ms 59444 KB Time limit exceeded
4 Execution timed out 4741 ms 58164 KB Time limit exceeded
5 Execution timed out 4745 ms 59088 KB Time limit exceeded
# Verdict Execution time Memory Grader output
1 Execution timed out 4748 ms 58304 KB Time limit exceeded
2 Execution timed out 4755 ms 60072 KB Time limit exceeded
3 Execution timed out 4779 ms 59888 KB Time limit exceeded
4 Execution timed out 4744 ms 59692 KB Time limit exceeded
5 Execution timed out 4742 ms 58304 KB Time limit exceeded
6 Execution timed out 4728 ms 58928 KB Time limit exceeded
7 Execution timed out 4742 ms 59692 KB Time limit exceeded
8 Execution timed out 4704 ms 58156 KB Time limit exceeded
9 Execution timed out 4735 ms 59184 KB Time limit exceeded
10 Execution timed out 4751 ms 58132 KB Time limit exceeded