답안 #8497

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
8497 2014-09-14T23:42:29 Z gs13023 Languages (IOI10_languages) C++
87 / 100
3826 ms 125084 KB
#include<cstdio>
#include<string.h>
#include"grader.h"
#include"lang.h"
#define MOD 131072
int lang_freq[60][70000];
long long lang_flow1[60][140000];
long long lang_flow2[60][140000];
long long lang_flow3[60][140000];
long long f1(int a,int b)
{
    return ((a<<5)^b)%MOD;
}
long long f2(int a,int b,int c)
{
    return ((a<<10)^(b<<5)^c)%MOD;
}
long long f3(int a,int b,int c,int d)
{
    return ((a<<15)^(b<<10)^(c<<5)^d)%MOD;
}
void excerpt(int *E)
{
    int ans=0;
  	long long ansp=0;
    long long pos[60]={0};
    for(int i=0;i<56;i++)
    {
        for(int j=0;j<100;j++)
        {
            pos[i]+=lang_freq[i][E[j]];
            if(j>0)pos[i]+=lang_flow1[i][f1(E[j-1],E[j])]*5000;
            if(j>1)pos[i]+=lang_flow2[i][f2(E[j-2],E[j-1],E[j])]*5000001;
          	if(j>2)pos[i]+=lang_flow3[i][f3(E[j-3],E[j-2],E[j-1],E[j])]*1000000001;
        }
        if(ansp<pos[i])ansp=pos[i],ans=i;
    }
    int lang=language(ans);
    for(int i=0;i<100;i++)
    {
        lang_freq[lang][E[i]]++;
        if(i>0)
        {
            lang_flow1[lang][f1(E[i-1],E[i])]++;
        }
        if(i>1)
        {
            lang_flow2[lang][f2(E[i-2],E[i-1],E[i])]++;
        }
      	if(i>2)
        {
          	lang_flow3[lang][f3(E[i-3],E[i-2],E[i-1],E[i])]++;
        }
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 3826 ms 124972 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Partially correct 3776 ms 125084 KB Output is partially correct - 80.25%