# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
120165 |
2019-06-23T16:04:19 Z |
OptxPrime |
Sajam (COCI18_sajam) |
C++11 |
|
140 ms |
2488 KB |
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include<queue>
#include<string.h>
#include<map>
using namespace std;
#define pb push_back
#define mp make_pair
#define tl TypeLetter
#define uc UndoCommands
#define gl GetLetter
long long n,k;
long long c=64;
string s[1010];
vector< long long>block[1010];
/// TLE, 60/90 DOBIJAM.
/// Dal su ovako i drugi rjesili? hamming distancom
/// NALETIO SAM NA NEKO RJESENJE KO MOJE, PROVJERITI SLICNOSTI I RAZLIKE
long long hamming( int a, int b )
{
long long ans=0;
for( int i=0;i<block[a].size();i++ ){
// cout << a << " " << b << " " << i << " "<< block[a][i] << " tarik " <<endl;
ans+= ( long long)(__builtin_popcountll( block[a][i]^block[b][i] ));
}
return ans;
}
int main()
{
//cout << ~3 <<endl;
cin>>n>>k;
for( int i=0;i<n;i++){
cin>>s[i];
long long curr=0;
for( int j=0;j<=s[i].size();j++ ){
if( ( j%c == 0 && j > 0 ) || j==s[i].size() ){
block[i].pb( curr );
curr=0;
if( j==s[i].size() ) break;
}
if( s[i][j]=='x' ) curr|=( 1ULL<<(j%c) );
}
}
long long res=100000000;
for( int i=0;i<n;i++ ){
long long sum0=0;
for( int j=0;j<n;j++ ){
if(i==j) continue;
// long long val1= hammin( & )
// sum0+= max( hamming( &s[i],&s[j] ), hamming( &s[i], kontra(s[j]) ));
// sum1+=max( hamming( kontra( s[i] ), &s[j] ), hamming( kontra(s[i]),kontra(s[j]) ));
long long val1=hamming( i,j );
//cout << i << " " <<j << " " << val1<<endl;
if( val1 > n ) cout << " wtald cfffff "<<endl;
sum0+=min( val1, n-val1 );
// if( sum0>k && sum1>k )break;
if( sum0>k ) break;
}
// res=min( res, min( sum0,sum1 ) );
res=min( res, sum0 );
}
// cout<<res<< " aa " <<endl;
int pos=0;
if( n==k ){
string curr=s[0];
for( int i=0;i<n;i++ ){
if( (i%64LL == 0 && i>0) )pos++;
/*if( curr[i]=='x' ){
block[pos]^=(1LL<<(i%64));
curr[i]='o';
}
else curr[i]='x';*/
block[i][pos]^=( 1LL<<(i%64LL) );
long long sum=0;
for( int j=0;j<n;j++ ){
if(i==j) continue;
long long val=hamming(i,j);
sum+=min( val, n-val );
}
res=min( res, sum );
block[i][pos]^=( 1LL<<(i%64LL) ); /// vratimo kako je bilo
}
}
if(res<=k) cout<<"DA"<<endl;
else cout<<"NE"<<endl;
// cout<<res<<endl;
return 0;
}
/*
5
1
2
1
2
2
*/
Compilation message
sajam.cpp: In function 'long long int hamming(int, int)':
sajam.cpp:30:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for( int i=0;i<block[a].size();i++ ){
~^~~~~~~~~~~~~~~~
sajam.cpp: In function 'int main()':
sajam.cpp:46:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for( int j=0;j<=s[i].size();j++ ){
~^~~~~~~~~~~~~
sajam.cpp:47:49: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if( ( j%c == 0 && j > 0 ) || j==s[i].size() ){
~^~~~~~~~~~~~~
sajam.cpp:50:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if( j==s[i].size() ) break;
~^~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
2 |
Correct |
14 ms |
640 KB |
Output is correct |
3 |
Correct |
23 ms |
896 KB |
Output is correct |
4 |
Correct |
85 ms |
1400 KB |
Output is correct |
5 |
Correct |
23 ms |
896 KB |
Output is correct |
6 |
Correct |
10 ms |
512 KB |
Output is correct |
7 |
Correct |
15 ms |
896 KB |
Output is correct |
8 |
Correct |
46 ms |
1400 KB |
Output is correct |
9 |
Correct |
5 ms |
512 KB |
Output is correct |
10 |
Correct |
45 ms |
1400 KB |
Output is correct |
# |
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 |
3 ms |
384 KB |
Output is correct |
4 |
Correct |
2 ms |
512 KB |
Output is correct |
5 |
Correct |
4 ms |
384 KB |
Output is correct |
6 |
Incorrect |
2 ms |
384 KB |
Output isn't correct |
7 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
47 ms |
1144 KB |
Output is correct |
2 |
Correct |
61 ms |
1280 KB |
Output is correct |
3 |
Correct |
38 ms |
1152 KB |
Output is correct |
4 |
Correct |
33 ms |
1144 KB |
Output is correct |
5 |
Correct |
75 ms |
1400 KB |
Output is correct |
6 |
Correct |
24 ms |
896 KB |
Output is correct |
7 |
Correct |
48 ms |
1272 KB |
Output is correct |
8 |
Correct |
60 ms |
1328 KB |
Output is correct |
9 |
Correct |
10 ms |
640 KB |
Output is correct |
10 |
Correct |
53 ms |
2396 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
67 ms |
1272 KB |
Output is correct |
2 |
Correct |
69 ms |
1400 KB |
Output is correct |
3 |
Correct |
35 ms |
1024 KB |
Output is correct |
4 |
Correct |
48 ms |
1144 KB |
Output is correct |
5 |
Correct |
56 ms |
1272 KB |
Output is correct |
6 |
Correct |
86 ms |
2296 KB |
Output is correct |
7 |
Correct |
17 ms |
640 KB |
Output is correct |
8 |
Correct |
45 ms |
1144 KB |
Output is correct |
9 |
Correct |
31 ms |
1288 KB |
Output is correct |
10 |
Correct |
52 ms |
2364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
48 ms |
1080 KB |
Output is correct |
2 |
Correct |
49 ms |
1140 KB |
Output is correct |
3 |
Correct |
128 ms |
2424 KB |
Output is correct |
4 |
Correct |
31 ms |
1272 KB |
Output is correct |
5 |
Incorrect |
49 ms |
1500 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
140 ms |
2424 KB |
Output is correct |
2 |
Correct |
133 ms |
2488 KB |
Output is correct |
3 |
Correct |
112 ms |
1400 KB |
Output is correct |
4 |
Incorrect |
60 ms |
1664 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |