QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#201610#5154. ETADreamOn#WA 0ms3868kbC++231.2kb2023-10-05 15:28:132023-10-05 15:28:14

Judging History

This is the latest submission verdict.

  • [2023-10-05 15:28:14]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3868kb
  • [2023-10-05 15:28:13]
  • Submitted

answer

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>

#define Maxn 1000005

using namespace std;

int a, b, n, m, ans[Maxn];

int gcd(int x, int y) {
    if(x < y) swap(x, y);
    if(!y) return x;
    else return gcd(y, x % y);
}

int main() {
    scanf("%d/%d", &a, &b);
    int gcdab = gcd(a, b); a /= gcdab, b /= gcdab;
    if(a < b) {
        if(a == b - 1) {
            n = b, m = b - 1;
            printf("%d %d\n", n, m);
            for(int i = 1; i <= m; ++i) printf("%d %d\n", 1, i + 1);
        }
        else printf("Impossible\n");
        return 0;
    }

    int k = ceil((2 * a + b) * 1.0 / b / b);
    n = k * b, m = n - 1;
    int restSum = a * k, cur = 1;

    printf("%d %d\n", n, m);

    while(cur * (cur + 1) / 2 + (n - 1 - cur) <= restSum) ++cur;
    --cur; restSum -= cur * (cur + 1) / 2;
    
    for(int u = 1; u <= cur; ++u) printf("%d %d\n", u, u + 1);

    // cout << " --- " << endl;

    for(int u = cur + 2; u <= n; ++u) {
        cur = 1;
        while(cur + (n - u) <= restSum) ++cur;
        --cur; restSum -= cur;
        printf("%d %d\n", cur, u);
    }

    return 0;
    
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3868kb

input:

1/2

output:

2 1
1 2

result:

ok 

Test #2:

score: -100
Wrong Answer
time: 0ms
memory: 3780kb

input:

1/3

output:

Impossible

result:

wrong answer Token "Impossible" doesn't correspond to pattern "impossible"