Submission #856476

# Submission time Handle Problem Language Result Execution time Memory
856476 2023-10-03T16:07:59 Z MilosMilutinovic PIN (CEOI10_pin) C++14
60 / 100
419 ms 14676 KB
#include <bits/stdc++.h>

#define pb push_back
#define fi first
#define se second
#define mp make_pair

using namespace std;

typedef long long ll;
typedef pair<int,int> pii;

int readint(){
	int x=0,f=1; char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}

int n,d;
char s[50005][4];

int main(){
	scanf("%d%d",&n,&d); d=4-d;
	for(int i=1;i<=n;i++) scanf("%s",s+i);
	map<string,int> cnt;
	long long ans=0;
	for(int i=1;i<=n;i++){
		for(int mask=(1<<4)-1;mask>=0;mask--){
			int pc=__builtin_popcount(mask);
			if(pc<d) continue;
			string str="";
			for(int j=0;j<4;j++) if(mask>>j&1) str+=s[i][j]; else str+='*';
			if (d==3){
				if(pc==4) ans-=3*cnt[str];
				if(pc==3) ans+=cnt[str];
				continue;
			}
			ans+=cnt[str]*(d%2==pc%2?1:-1);
		}
		for(int mask=0;mask<(1<<4);mask++){
			string str="";
			for(int j=0;j<4;j++) if(mask>>j&1) str+=s[i][j]; else str+='*';
			cnt[str]+=1;
		}
	}
	printf("%lld\n",ans);
	return 0;
}

/*
4 1
0000
a010
0202
a0e2

4 2
0000
a010
0202
a0e2
*/

Compilation message

pin.cpp: In function 'int main()':
pin.cpp:25:32: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'char (*)[4]' [-Wformat=]
   25 |  for(int i=1;i<=n;i++) scanf("%s",s+i);
      |                               ~^  ~~~
      |                                |   |
      |                                |   char (*)[4]
      |                                char*
pin.cpp:24:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |  scanf("%d%d",&n,&d); d=4-d;
      |  ~~~~~^~~~~~~~~~~~~~
pin.cpp:25:29: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |  for(int i=1;i<=n;i++) scanf("%s",s+i);
      |                        ~~~~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 7 ms 1116 KB Output is correct
2 Incorrect 7 ms 876 KB Output isn't correct
3 Correct 6 ms 860 KB Output is correct
4 Correct 78 ms 3284 KB Output is correct
5 Correct 119 ms 3664 KB Output is correct
6 Incorrect 120 ms 3668 KB Output isn't correct
7 Incorrect 105 ms 3684 KB Output isn't correct
8 Correct 118 ms 3924 KB Output is correct
9 Correct 190 ms 5416 KB Output is correct
10 Incorrect 263 ms 5800 KB Output isn't correct
11 Incorrect 148 ms 3924 KB Output isn't correct
12 Incorrect 276 ms 5636 KB Output isn't correct
13 Incorrect 165 ms 4244 KB Output isn't correct
14 Correct 156 ms 3856 KB Output is correct
15 Correct 277 ms 5476 KB Output is correct
16 Correct 211 ms 11108 KB Output is correct
17 Incorrect 371 ms 14652 KB Output isn't correct
18 Correct 348 ms 12164 KB Output is correct
19 Correct 419 ms 13520 KB Output is correct
20 Correct 390 ms 14676 KB Output is correct