Submission details
Task:Pizza
Sender:Pietari Kaskela
Submission time:2015-09-30 18:02:57 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.18 sdetails
#2ACCEPTED0.05 sdetails
#3ACCEPTED0.07 sdetails
#4ACCEPTED0.27 sdetails
#5ACCEPTED0.66 sdetails
#6ACCEPTED0.66 sdetails
#7ACCEPTED0.65 sdetails
#8ACCEPTED0.65 sdetails
#9ACCEPTED0.65 sdetails
#10ACCEPTED0.64 sdetails
#11ACCEPTED0.66 sdetails
#12ACCEPTED0.66 sdetails
#13ACCEPTED0.66 sdetails
#14ACCEPTED0.68 sdetails
#15ACCEPTED0.69 sdetails

Code

#include <bits/stdc++.h>

#define i64 long long
#define u64 unsigned long long
#define i32 int
#define u32 unsigned int

#define pii pair<int, int>
#define pll pair<long long, long long>

#define defmod 1000000007
using namespace std;
int s[200][200][26] = {0};

vector<int> sum(int a, int b, int c, int d){
	vector<int> re(26, 0);
	for(int k = 0; k < 26; k++)
		re[k] = s[c][d][k];
	if(a > 0){
		for(int k = 0; k < 26; k++)
			re[k]-=s[a-1][d][k];
	}
	if(b > 0){
		for(int k = 0; k < 26; k++)
			re[k]-=s[c][b-1][k];
	}
	if(a > 0 && b > 0){
		for(int k = 0; k < 26; k++)
			re[k]+=s[a-1][b-1][k];
	}
	return re;
	
}
int main(){
	cin.sync_with_stdio(0);
	cin.tie(0);
	
	int n, m; cin >> n >> m;
	string t[202];
	for(int i = 0; i < n; i++){
		cin >> t[i];
		int rivi[26] = {0};
		for(int j = 0; j < m; j++){
			rivi[t[i][j]-'A']++;
			for(int k = 0; k < 26; k++)
				s[i][j][k] = rivi[k];
			if(i > 0){
				for(int k = 0; k < 26; k++)
					s[i][j][k]+=s[i-1][j][k];
			}
		}
	}

	int re = 0;
	for(int i = 0; i < n; i++){
		for(int j = 0; j < m; j++){
			for(int jj = j; jj < m; jj++){
				for(int ii = i; ii < n; ii++){
					vector<int> lol = sum(i, j, ii, jj);
					bool suur = false;
					bool ok = true;
					for(int k = 0; k < 26; k++){
						if(lol[k] > 1){
							suur = true;
							ok = false;
							break;
						}
						
					}
					if(suur)
						break;
					if(ok)
						re++;
				}
			}
		}
	}
	cout << re <<  endl;
	return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
184 87
LRBBMQBHCDARZOWKKYHIDDQSCDXRJM...

correct output
224236

user output
224236

Test 2

Verdict: ACCEPTED

input
27 45
JGFWGHIJQSOQTXXDACDWKJIFPUSGWE...

correct output
16321

user output
16321

Test 3

Verdict: ACCEPTED

input
191 23
NPWSFHCKPTJGFLITCZCZJBE
YYAJAXQMKHIEMPGYFZHNGSV
CVXEWGHCGFCQHZITLPBPBRV
AYWJLFCJHZGNXOXAUECMMEU
...

correct output
59000

user output
59000

Test 4

Verdict: ACCEPTED

input
61 199
PSKALEBUBFINGWBQWONRUYLCYIMNAQ...

correct output
165724

user output
165724

Test 5

Verdict: ACCEPTED

input
200 200
JBAKLCIAQRTWHPANGEIUGENSDHGPGC...

correct output
561705

user output
561705

Test 6

Verdict: ACCEPTED

input
200 200
SVSPWCEXABASBFZEMWAKKWAUIUNAVR...

correct output
565820

user output
565820

Test 7

Verdict: ACCEPTED

input
200 200
UYTHYGQHERHDTLIKRXUJFPBDDAQCPQ...

correct output
562800

user output
562800

Test 8

Verdict: ACCEPTED

input
200 200
WVIFEIMKFUSHVKHLCEDSMACDNVVSQZ...

correct output
557421

user output
557421

Test 9

Verdict: ACCEPTED

input
200 200
SZRAYLLUKXDHTRRCIWYTJCDQBQVTVH...

correct output
562054

user output
562054

Test 10

Verdict: ACCEPTED

input
200 200
IPETLETNADESOVVODINSQWERQFLBRO...

correct output
558431

user output
558431

Test 11

Verdict: ACCEPTED

input
200 200
BCBMFWOTIVPQIENQUWJYAWRYNBCFVV...

correct output
563290

user output
563290

Test 12

Verdict: ACCEPTED

input
200 200
NPTEOLTKVTBXIUWBJEKTDYRWKECVJY...

correct output
564778

user output
564778

Test 13

Verdict: ACCEPTED

input
200 200
IMQXSCUUJBKVLEOAUPGPFOYBCPXCEY...

correct output
559232

user output
559232

Test 14

Verdict: ACCEPTED

input
200 200
YJJWRSXPEKSNBDWCSNUQHJPQTXKYPG...

correct output
557185

user output
557185

Test 15

Verdict: ACCEPTED

input
200 200
AITMXDNVBGXOBSKPKBLJFNOWKBQZZA...

correct output
563009

user output
563009