Submission #8076

# Submission time Handle Problem Language Result Execution time Memory
8076 2014-08-28T11:11:03 Z ho94949 Languages (IOI10_languages) C++
36 / 100
7229 ms 3132 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:20:32: warning: suggest parentheses around '+' inside '<<' [-Wparentheses]
   unsigned int triplet=E[i]<<16+E[i+1];
                              ~~^~~~~~~
lang.cpp:38:32: warning: suggest parentheses around '+' inside '<<' [-Wparentheses]
   unsigned int triplet=E[i]<<16+E[i+1];
                              ~~^~~~~~~
lang.cpp:24:50: 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 6889 ms 3068 KB Output is correct
# Verdict Execution time Memory Grader output
1 Partially correct 7229 ms 3132 KB Output is partially correct - 35.59%