10332022-02-26 19:00:38mraronFőzet készítéscpp14Accepted 50/50303ms51576 KiB
#include<bits/stdc++.h>
using namespace std;
const int MAXN=505, SQRT=25;
int dp[SQRT][MAXN][MAXN];
vector<int> rel[MAXN];

int main() {
    ios_base::sync_with_stdio(false);
	cin.tie(0);
    cout.tie(0);
	
	for(int i=1;i<MAXN;++i) {
		for(int j=1;j<MAXN;++j) {
			if(__gcd(i,j)==1) {
				rel[i].push_back(j);
			}
		}
	}
	
    for(int nxt=1;nxt<SQRT;++nxt) {
        for(int i=0;i<MAXN;++i) {
            for(int j=0;j<MAXN;++j) {
                if(i==0 || j==0) {
                    dp[nxt][i][j]=0;
                    continue ;
                }
                
                int mX=i, mY=j, cnt=0;
                int ans=dp[nxt-1][mX][mY];
                for(int yy:rel[nxt]) {
                    mX-=nxt;
                    mY-=yy;
                    cnt++;
		
                    if(mX<0 || mY<0) break ;
		
                    ans=max(ans, dp[nxt-1][mX][mY]+cnt);
                }
                
                dp[nxt][i][j]=ans;
            }
        }
    }
    
	int T;
	cin>>T;
	while(T--) {
		int x,y;
		cin>>x>>y;
		if(x>y) swap(x,y);
		cout<<dp[24][x][y]<<"\n";
	}
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/0266ms51292 KiB
2Accepted0/0246ms51372 KiB
3Accepted3/3246ms51368 KiB
4Accepted2/2243ms51376 KiB
5Accepted3/3291ms51380 KiB
6Accepted2/2293ms51372 KiB
7Accepted3/3298ms51408 KiB
8Accepted2/2284ms51424 KiB
9Accepted3/3286ms51436 KiB
10Accepted2/2284ms51456 KiB
11Accepted2/2268ms51476 KiB
12Accepted2/2268ms51376 KiB
13Accepted2/2277ms51380 KiB
14Accepted2/2256ms51448 KiB
15Accepted2/2252ms51512 KiB
16Accepted2/2303ms51536 KiB
17Accepted2/2239ms51568 KiB
18Accepted2/2230ms51500 KiB
19Accepted2/2232ms51552 KiB
20Accepted3/3231ms51548 KiB
21Accepted3/3231ms51576 KiB
22Accepted3/3241ms51552 KiB
23Accepted3/3239ms51556 KiB