Submission #65808

# Submission time Handle Problem Language Result Execution time Memory
65808 2018-08-09T00:03:11 Z ho94949 Languages (IOI10_languages) C++17
66 / 100
7720 ms 5144 KB
    #include <stdlib.h>
    #include <stdio.h>
    #include <map>
    using namespace std;
     
    #include "grader.h"
    #include "lang.h"
     
     
    #define SZ 100
    #define LANG 56
     
    map<unsigned int, int> A[LANG];
    int appear[LANG];
     
    void excerpt(int *E) {
    	double langcnt[LANG];
    	for(int i=0;i<LANG;i++) langcnt[i]=0;
    	for(int i=0;i<SZ-1;i++){
    		unsigned int triplet=(E[i]<<16)+E[i+1];
    		for(int j=0;j<LANG;j++){
    			map<unsigned int,int>::iterator it=A[j].find(triplet);
    			if(it!=A[j].end())
    				langcnt[j]+=(double)(*it).second/(appear[LANG]+1);
    		}
    	}
    	double max=0;
    	int maxi=0;
    	for(int i=0;i<LANG;i++){
    		if(max<langcnt[i]){
    			max=langcnt[i];
    			maxi=i;
    		}
    	}
    	int res=language(maxi);
    	appear[res]++;
    	for(int i=0;i<SZ-1;i++){
    		unsigned int triplet=(E[i]<<16)+E[i+1];
    		A[res][triplet]=A[res][triplet]+1;
    	}
    	return;
    }

Compilation message

lang.cpp: In function 'void excerpt(int*)':
lang.cpp:24:54: warning: array subscript is above array bounds [-Warray-bounds]
         langcnt[j]+=(double)(*it).second/(appear[LANG]+1);
                                           ~~~~~~~~~~~^
# Verdict Execution time Memory Grader output
1 Correct 7720 ms 5144 KB Output is correct
# Verdict Execution time Memory Grader output
1 Partially correct 7125 ms 4932 KB Output is partially correct - 61.52%