Submission #110422

# Submission time Handle Problem Language Result Execution time Memory
110422 2019-05-10T19:57:55 Z Breno_XD Bitaro the Brave (JOI19_ho_t1) C++14
0 / 100
8 ms 512 KB
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second

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;

int 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;
        if(oeO[i]!=-1){
            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
                    if(oeI[j]!=-1){
                        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: In function 'int main()':
joi2019_ho_t1.cpp:23: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:50:13: warning: iteration 3419 invokes undefined behavior [-Waggressive-loop-optimizations]
         int i = I[top].x;
             ^
joi2019_ho_t1.cpp:47:23: note: within this loop
     for(int top=1; top<=MAXN; top++){
                    ~~~^~~~~~
# Verdict Execution time Memory 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 5 ms 512 KB Output is correct
6 Correct 3 ms 512 KB Output is correct
7 Correct 8 ms 384 KB Output is correct
8 Incorrect 6 ms 512 KB Output isn't correct
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory 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 5 ms 512 KB Output is correct
6 Correct 3 ms 512 KB Output is correct
7 Correct 8 ms 384 KB Output is correct
8 Incorrect 6 ms 512 KB Output isn't correct
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory 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 5 ms 512 KB Output is correct
6 Correct 3 ms 512 KB Output is correct
7 Correct 8 ms 384 KB Output is correct
8 Incorrect 6 ms 512 KB Output isn't correct
9 Halted 0 ms 0 KB -