답안 #110667

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
110667 2019-05-11T19:33:11 Z Breno_XD Bitaro the Brave (JOI19_ho_t1) C++14
0 / 100
9 ms 640 KB
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
#define int long long

typedef pair<int,int> pii;

const int MAXN = 3420;
int N,M, ans;
pii J[MAXN], O[MAXN], I[MAXN];
int oeJ[MAXN], oeO[MAXN], oeI[MAXN];
int contj, conto, conti;
char letra;

main(){

    //Inicializo com -1, indicando que não tem como chegar lá
    memset(oeJ, -1, sizeof(oeJ));
    memset(oeO, -1, sizeof(oeO));
    memset(oeI, -1, sizeof(oeI));

    //leitura
    scanf("%d%d", &N, &M);
    for(int i=1; i<=N; i++){
        for(int j=1; j<=M; j++){
            cin >> letra;
            if(letra == 'J'){
                J[++contj] = {i,j};
                //if(oeJ[i]==-1) oeJ[i] = contj;
            }
            if(letra == 'O'){
                O[++conto] = {i,j};
                if(oeO[i]==-1) oeO[i] = conto;
            }
            if(letra == 'I'){
                I[++conti] = {j,i};
                //if(oeI[i]==-1) oeI[i] = conti;
            }
        }
    }

    //contj--; conto--; conti--; // Agora guardam a posição final

    //Ordeno o vetor I
    sort(I+1, I+conti+1); //Ordena em ordem crescente

    for(int top=1; top<=MAXN; top++){
        //cout << endl;
        //cout << "Top: " << top << endl;
        int i = I[top].x;
        //cout << "i: " << i << "    oeI[i] = " << oeI[i] << endl;
        if(oeI[i]==-1) oeI[i] = top;
        //cout << "oeI[i] = " << oeI[i] << endl;
    }

    /*
    cout << "Vetor J: " << endl;
    for(int i=1; i<=contj; i++) cout << J[i].x << " " << J[i].y << endl;
    cout << endl;

    cout << "Vetor O: " << endl;
    for(int i=1; i<=conto; i++) cout << O[i].x << " " << O[i].y << endl;
    cout << endl;

    cout << "Vetor I: " << endl;
    for(int i=1; i<=conti; i++) cout << I[i].x << " " << I[i].y << endl;
    cout << endl;

    cout << "oeJ: ";
    for(int i=1; i<=10; i++) cout << oeJ[i] << " ";
    cout << endl;

    cout << "oeO: ";
    for(int i=1; i<=10; i++) cout << oeO[i] << " ";
    cout << endl;

    cout << "oeI: ";
    for(int i=1; i<=10; i++) cout << oeI[i] << " ";
    cout << endl;
    cout << endl;
    */

    for(int ind=1; ind<=contj; ind++){ //Indice que percorre J

        int i = J[ind].x; int j = J[ind].y;

        for(int ini = oeO[i]; O[ini].x==i; ini++){

            int l = O[ini].y;

            if(j<l){ //Se for um valor possível, continuo a buscar

                for(int comeco = oeI[j]; I[comeco].x==j; comeco++){
                    int k = I[comeco].y;

                    if(i<k){
                        ans++;
                        //cout << "Encontrei: (i,j,k,l) = (" << i << ", " << j << ", " << k << ", " << l << ")" << endl;
                    }
                }

            }
            //Caso contrário eu dessprezo, pois não é uma possibilidade
        }

    }

    cout << ans << endl;
    return 0;
}

Compilation message

joi2019_ho_t1.cpp:16:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main(){
      ^
joi2019_ho_t1.cpp: In function 'int main()':
joi2019_ho_t1.cpp:24:25: warning: format '%d' expects argument of type 'int*', but argument 2 has type 'long long int*' [-Wformat=]
     scanf("%d%d", &N, &M);
                   ~~    ^
joi2019_ho_t1.cpp:24:25: warning: format '%d' expects argument of type 'int*', but argument 3 has type 'long long int*' [-Wformat=]
joi2019_ho_t1.cpp:24:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &N, &M);
     ~~~~~^~~~~~~~~~~~~~~~
joi2019_ho_t1.cpp:51:13: warning: iteration 3419 invokes undefined behavior [-Waggressive-loop-optimizations]
         int i = I[top].x;
             ^
joi2019_ho_t1.cpp:48:23: note: within this loop
     for(int top=1; top<=MAXN; top++){
                    ~~~^~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 6 ms 512 KB Output is correct
6 Correct 4 ms 512 KB Output is correct
7 Correct 9 ms 640 KB Output is correct
8 Incorrect 5 ms 560 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 6 ms 512 KB Output is correct
6 Correct 4 ms 512 KB Output is correct
7 Correct 9 ms 640 KB Output is correct
8 Incorrect 5 ms 560 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 6 ms 512 KB Output is correct
6 Correct 4 ms 512 KB Output is correct
7 Correct 9 ms 640 KB Output is correct
8 Incorrect 5 ms 560 KB Output isn't correct
9 Halted 0 ms 0 KB -