Submission details
Task:Pizza
Sender:Häviö Life
Submission time:2015-09-30 18:12:48 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.23 sdetails
#2ACCEPTED0.05 sdetails
#3ACCEPTED0.07 sdetails
#4ACCEPTED0.18 sdetails
#5ACCEPTED0.54 sdetails
#6ACCEPTED0.56 sdetails
#7ACCEPTED0.56 sdetails
#8ACCEPTED0.54 sdetails
#9ACCEPTED0.54 sdetails
#10ACCEPTED0.54 sdetails
#11ACCEPTED0.56 sdetails
#12ACCEPTED0.56 sdetails
#13ACCEPTED0.55 sdetails
#14ACCEPTED0.56 sdetails
#15ACCEPTED0.55 sdetails

Code

#include <iostream>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <unordered_set>
#include <stdio.h>
#include <string.h>
#include <unordered_map>
#include <fstream>
#include <set>
#include <map>

#define MOD 1000000007
#define ll long long
#define N (1<<50)
#define float double
#define str string

using namespace std;

int m[200][200];
int s[200][200][256];

int q(int y1, int x1, int y2, int x2, int c){
    int v=s[y2][x2][c];

    if(x1>0)
        v-=s[y2][x1-1][c];
    if(y1>0)
        v-=s[y1-1][x2][c];
    if(x1>0&&y1>0)
        v+=s[y1-1][x1-1][c];
    return v;
}

int main(){
    int h,w;
    cin>>h>>w;
    for(int i=0; i<h; i++){
        string __s;
        cin>>__s;
        for(int e=0; e<w; e++)
            m[i][e]=__s[e];
    }


    for(int c='A'; c<='Z'; c++){
        if(m[0][0]==c)
            s[0][0][c]=1;
        for(int i=1; i<h; i++)
            if(m[i][0]==c)
                s[i][0][c]=s[i-1][0][c]+1;
            else
                s[i][0][c]=s[i-1][0][c];

        for(int e=1; e<w; e++)
            if(m[0][e]==c)
                s[0][e][c]=s[0][e-1][c]+1;
            else
                s[0][e][c]=s[0][e-1][c];

        for(int i=1; i<h; i++)
            for(int e=1; e<w; e++){
                int _s=s[i-1][e][c]+s[i][e-1][c]-s[i-1][e-1][c];
                if(m[i][e]==c)
                    _s++;
                s[i][e][c]=_s;
            }
    }
    int R=26;
    int vast=0;

    for(int i=0; i<h; i++)
        for(int e=0; e<w; e++)
            for(int kork=1; kork<=R&&i+kork<=h; kork++)
                for(int lev=1; lev*kork<=R&&e+lev<=w; lev++){
                    bool ox=1;
                    for(char kirj='A'; kirj<='Z'; kirj++)
                        if(q(i,e,i+kork-1,e+lev-1,kirj)>1)
                            ox=false;
                    if(ox)
                        vast++;
                }

    cout<<vast<<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