| Task: | Tontti |
| Sender: | quasisphere |
| Submission time: | 2015-09-28 00:54:38 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | 0 |
| subtask | verdict | score |
|---|---|---|
| #1 | WRONG ANSWER | 0 |
| #2 | WRONG ANSWER | 0 |
| #3 | WRONG ANSWER | 0 |
| test | verdict | time | subtask | |
|---|---|---|---|---|
| #1 | WRONG ANSWER | 0.06 s | 1 | details |
| #2 | ACCEPTED | 0.05 s | 1 | details |
| #3 | WRONG ANSWER | 0.05 s | 1 | details |
| #4 | WRONG ANSWER | 0.05 s | 1 | details |
| #5 | WRONG ANSWER | 0.06 s | 1 | details |
| #6 | ACCEPTED | 0.07 s | 2 | details |
| #7 | ACCEPTED | 0.07 s | 2 | details |
| #8 | WRONG ANSWER | 0.09 s | 2 | details |
| #9 | WRONG ANSWER | 0.07 s | 2 | details |
| #10 | WRONG ANSWER | 0.08 s | 2 | details |
| #11 | ACCEPTED | 0.96 s | 3 | details |
| #12 | ACCEPTED | 0.97 s | 3 | details |
| #13 | WRONG ANSWER | 0.66 s | 3 | details |
| #14 | WRONG ANSWER | 0.65 s | 3 | details |
| #15 | WRONG ANSWER | 0.65 s | 3 | details |
Code
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<algorithm>
#include<cmath>
#include<utility>
using namespace std;
int64_t calc(const vector<vector<int64_t>> &foo, int64_t i, int64_t j, int64_t sqsize) {
return foo[i][j] - ((i-sqsize > 0)?foo[i-sqsize][j]:0) - ((j-sqsize > 0)?foo[i][j-sqsize]:0) + ((i-sqsize > 0 && j-sqsize > 0)?foo[i-sqsize][j-sqsize]:0);
}
int main(void) {
int64_t n,m,x;
cin >> n >> m >> x;
vector<vector<char>> woods(n,vector<char>(m));
for(int64_t i=0;i<n;i++) {
for(int64_t j=0;j<m;j++) {
cin >> woods[i][j];
}
}
vector<vector<int64_t>> foo(n,vector<int64_t>(m,0));
for(int64_t i=0;i<n;i++) {
for(int64_t j=0;j<m;j++) {
if(woods[i][j] == '*') {
foo[i][j]=((j-1>=0)?foo[i][j-1]:0)+((i-1>=0)?foo[i-1][j]:0)-((i-1>=0&&j-1>=0)?foo[i-1][j-1]:0)+1;
} else {
foo[i][j]=((j-1>=0)?foo[i][j-1]:0)+((i-1>=0)?foo[i-1][j]:0)-((i-1>=0&&j-1>=0)?foo[i-1][j-1]:0);
}
}
}
int64_t ways=0;
for(int64_t i=0;i<n;i++) {
for(int64_t j=0;j<m;j++) {
int64_t sqsize=1;
for(int64_t blah=2048;blah>=1;blah/=2) {
while(sqsize+blah<=min(i+1,j+1) && calc(foo,i,j,sqsize+blah)<=x) sqsize+=blah;
}
if(calc(foo,i,j,sqsize) != x) continue;
int64_t maxsize=sqsize;
for(int64_t blah=2048;blah>=1;blah/=2) {
while(sqsize-blah>0 && calc(foo,i,j,sqsize-blah)>=x) sqsize-=blah;
}
int64_t minsize=sqsize;
ways+=maxsize-minsize+1;
}
}
cout << ways << '\n';
return 0;
}
Test details
Test 1
Subtask: 1
Verdict: WRONG ANSWER
| input |
|---|
| 10 10 1 ......*... .......*.. *..*....*. *....*.... ... |
| correct output |
|---|
| 94 |
| user output |
|---|
| 92 |
Test 2
Subtask: 1
Verdict: ACCEPTED
| input |
|---|
| 10 10 5 ********** ********** ********** ********** ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 3
Subtask: 1
Verdict: WRONG ANSWER
| input |
|---|
| 10 10 10 **...*...* *..*.**.*. ...**.*..* *...**.*.. ... |
| correct output |
|---|
| 4 |
| user output |
|---|
| 7 |
Test 4
Subtask: 1
Verdict: WRONG ANSWER
| input |
|---|
| 10 10 5 ****...... *.*.**..** ....*.*..* ...*.***.. ... |
| correct output |
|---|
| 16 |
| user output |
|---|
| 21 |
Test 5
Subtask: 1
Verdict: WRONG ANSWER
| input |
|---|
| 10 10 2 **.***..*. ...*.*.... .***.*...* ***.***..* ... |
| correct output |
|---|
| 30 |
| user output |
|---|
| 32 |
Test 6
Subtask: 2
Verdict: ACCEPTED
| input |
|---|
| 500 500 1 ................................. |
| correct output |
|---|
| 9552040 |
| user output |
|---|
| 9552040 |
Test 7
Subtask: 2
Verdict: ACCEPTED
| input |
|---|
| 500 500 5 ................................. |
| correct output |
|---|
| 1536063 |
| user output |
|---|
| 1536063 |
Test 8
Subtask: 2
Verdict: WRONG ANSWER
| input |
|---|
| 500 500 25000 **...*...**..*.*..*.**.*..*.*.... |
| correct output |
|---|
| 288 |
| user output |
|---|
| 289 |
Test 9
Subtask: 2
Verdict: WRONG ANSWER
| input |
|---|
| 500 500 12500 **.**.*..*...*.**...*.***........ |
| correct output |
|---|
| 786 |
| user output |
|---|
| 782 |
Test 10
Subtask: 2
Verdict: WRONG ANSWER
| input |
|---|
| 500 500 5000 .*.*.**..*.*.**.**..*..**...*.... |
| correct output |
|---|
| 1763 |
| user output |
|---|
| 1771 |
Test 11
Subtask: 3
Verdict: ACCEPTED
| input |
|---|
| 2000 2000 1 ................................. |
| correct output |
|---|
| 489611392 |
| user output |
|---|
| 489611392 |
Test 12
Subtask: 3
Verdict: ACCEPTED
| input |
|---|
| 2000 2000 5 ................................. |
| correct output |
|---|
| 120725884 |
| user output |
|---|
| 120725884 |
Test 13
Subtask: 3
Verdict: WRONG ANSWER
| input |
|---|
| 2000 2000 400000 ..*..**.**.**.*.***...**.*..**... |
| correct output |
|---|
| 1849 |
| user output |
|---|
| 1853 |
Test 14
Subtask: 3
Verdict: WRONG ANSWER
| input |
|---|
| 2000 2000 200000 ***.*....*.*..*....**..*..*.*.... |
| correct output |
|---|
| 2665 |
| user output |
|---|
| 2657 |
Test 15
Subtask: 3
Verdict: WRONG ANSWER
| input |
|---|
| 2000 2000 80000 **.**...*.***.**....**.*....*.... |
| correct output |
|---|
| 5587 |
| user output |
|---|
| 5580 |
