C++方程这该怎么做?

描述
小明很喜欢方程,他想让你帮他解这个方程ax+by=c,其中x,y为未知数,a,b,c为已知数。小明希望你求出一组x,y满足x,y是方程的解,并且x需要尽量的小并且大于等于零。
输入
第一行三个整数a,b,c。
输出
输出一行两个整数分别表示满足条件的x,y。如果无解输出−1。
样例输入
2 3 1
样例输出
2 -1
提示
所有数据满足:1≤a,b,c≤109。

算法很差,凑合看看

#include <stdio.h>

int main() {
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    
    int d=c-a-b;
    d=d<0?d:0;
    
    for(int x=0;x<110;x++)
    {
        for(int y=d;y<110;y++)
        {
            if(a*x+b*y==c)
            {
                printf("%d %d\n",x,y);
                return 0;
            }
        }
    }
    printf("-1\n");
    
    return 0;
}