제출 #1329896

#제출 시각아이디문제언어결과실행 시간메모리
1329896boclobanchatLanguages (IOI10_languages)C++20
98 / 100
3657 ms237532 KiB
#include<bits/stdc++.h>
using namespace std;

#include "grader.h"
#include "lang.h"

#define SZ 100

const int mod=1444447;
pair< bool,pair<bool,bool> > mp[56][mod+5];
long long f[56];

void excerpt(int *E)
{
	long long mx=-1,pos=0;
	for(int i=0;i<=55;i++) f[i]=0;
	for(int j=0;j<100;j++)
	{
		int enc=0;
		for(int k=j;k<=j+4&&k<100;k++)
		{
			enc=(65536LL*enc+E[k])%mod;
			for(int i=0;i<=55;i++)
			{
				pair< bool,pair<bool,bool> > res=mp[i][enc];
				int t=((int)res.first*4+(int)res.second.first*2+res.second.second);
				if(t) f[i]+=(1<<(t-1));
			}
		}
	}
	for(int i=0;i<=55;i++) if(mx<f[i]) mx=f[i],pos=i;
	int ans=language(pos);
	for(int j=0;j<100;j++)
	{
		int enc=0;
		for(int k=j;k<=j+4&&k<100;k++)
		{
			enc=(65536LL*enc+E[k])%mod;
			mp[ans][enc]=max(mp[ans][enc],(pair< bool,pair<bool,bool> >){(k-j+1)/4,{(k-j+1)/2%2,(k-j+1)%2}});
		}
	}
}

컴파일 시 표준 에러 (stderr) 메시지

lang.cpp: In function 'void excerpt(int*)':
lang.cpp:39:93: warning: narrowing conversion of '(((k - j) + 1) / 4)' from 'int' to 'bool' [-Wnarrowing]
   39 |                         mp[ans][enc]=max(mp[ans][enc],(pair< bool,pair<bool,bool> >){(k-j+1)/4,{(k-j+1)/2%2,(k-j+1)%2}});
      |                                                                                      ~~~~~~~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...