답안 #29919

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
29919 2017-07-21T10:41:56 Z ozaslan 게임 (IOI13_game) C++14
27 / 100
1769 ms 33268 KB
#include <bits/stdc++.h>
#include <stdio.h>
#include "game.h"
#define max_N 100001

long long gcd2(long long X, long long Y) {
	//printf("X\n");
    long long tmp;
    while (X != Y && Y != 0) {
        tmp = X;
        X = Y;
        Y = tmp % Y;
    }
    return X;
}

long long st[10][max_N * 4];
int sa, su;

void init(int R, int C) {
	sa = R;
	su = C;
}

void guncelle(int dugum, int sol, int sag, int satir, int sutun, long long K) {

    if (sol == sag) {
        st[satir][dugum] = K;
        return;
    }

    int orta = (sol + sag) / 2;

    if (orta >= sutun)
        guncelle(dugum*2, sol, orta, satir, sutun, K);
    else
        guncelle(dugum*2+1, orta+1, sag, satir, sutun, K);

    st[satir][dugum] = gcd2(st[satir][dugum*2], st[satir][dugum*2+1]);
}

void update(int P, int Q, long long K) {
    guncelle(1, 0, su-1, P, Q, K);
}

long long sorgu(int dugum, int sol, int sag, int satir, int aSol, int aSag) {
   // printf("Dugum: %d, sol: %d, sag: %d, satir: %d, aSol: %d, aSag: %d\n", dugum, sol, sag, satir, aSol, aSag);
    if(sol > aSag || sag < aSol)
        return -1;

    if(sol >= aSol && sag <= aSag)
        return st[satir][dugum];

    int orta = (sol + sag) / 2;
    long long s1 = sorgu(dugum*2, sol, orta, satir, aSol, aSag);
    long long s2 = sorgu(dugum*2+1, orta+1, sag, satir, aSol, aSag);

    if ( (s1 != -1) && (-1 != s2) )
        return gcd2(s1, s2);
    if (s1 == -1)
        return s2;
    return s1;
}


long long calculate(int P, int Q, int U, int V) {
    /* ... */

    long long ekok = sorgu(1, 0, su-1, P, Q, V);
   // printf("Satir: %d, s: %lld\n", P, ekok);

    for (int i = P+1; i <= U; i++) {
        long long s = sorgu(1, 0, su-1, i, Q, V);
     //   printf("Satir: %d, s: %lld\n", i, s);
        ekok = gcd2(ekok, s);
    }

    return ekok;
}

Compilation message

grader.c: In function 'int main()':
grader.c:18:6: warning: variable 'res' set but not used [-Wunused-but-set-variable]
  int res;
      ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 33268 KB Output is correct
2 Runtime error 0 ms 33268 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 33268 KB Output is correct
2 Correct 0 ms 33268 KB Output is correct
3 Correct 0 ms 33268 KB Output is correct
4 Correct 1769 ms 33268 KB Output is correct
5 Correct 893 ms 33268 KB Output is correct
6 Correct 1343 ms 33268 KB Output is correct
7 Correct 1326 ms 33268 KB Output is correct
8 Correct 1143 ms 33268 KB Output is correct
9 Correct 1499 ms 33268 KB Output is correct
10 Correct 1143 ms 33268 KB Output is correct
11 Correct 0 ms 33268 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 33268 KB Output is correct
2 Runtime error 0 ms 33268 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 33268 KB Output is correct
2 Runtime error 0 ms 33268 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 33268 KB Output is correct
2 Runtime error 0 ms 33268 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -