Submission details
Task:Niitty
Sender:DLPS
Submission time:2026-09-15 15:59:21 +0300
Language:C++ (C++20)
Status:READY
Result:0
Feedback
subtaskverdictscore
#10
#20
#30
#40
#50
#60
Test results
testverdicttimesubtask
#10.00 s1, 2, 3, 4, 5, 6details
#20.01 s1, 2, 3, 4, 5, 6details
#30.00 s1, 2, 3, 4, 5, 6details
#4ACCEPTED0.00 s1, 2, 3, 4, 5, 6details
#5ACCEPTED0.00 s1, 2, 3, 4, 5, 6details
#60.00 s2, 3, 4, 5, 6details
#70.00 s2, 3, 4, 5, 6details
#80.00 s2, 3, 4, 5, 6details
#90.00 s2, 3, 4, 5, 6details
#100.00 s3, 4, 5, 6details
#110.00 s3, 4, 5, 6details
#120.00 s3, 4, 5, 6details
#130.00 s3, 4, 5, 6details
#140.01 s4, 5, 6details
#150.01 s4, 5, 6details
#160.01 s4, 5, 6details
#170.01 s4, 5, 6details
#180.01 s5, 6details
#190.01 s5, 6details
#200.01 s5, 6details
#210.01 s5, 6details
#220.02 s6details
#230.03 s6details
#240.02 s6details
#250.02 s6details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:130:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  130 |                 for (int x = 0; x < row.size(); ++x)
      |                                 ~~^~~~~~~~~~~~
input/code.cpp: At global scope:
input/code.cpp:61:12: warning: 'int Y2Solver(int, int, int, int, int)' defined but not used [-Wunused-function]
   61 | static int Y2Solver(int min, int max, int x1, int x2, int y1)
      |            ^~~~~~~~

Code

#pragma GCC optimize("O3")
 
#include "bits/stdc++.h"
#include "unordered_map"
#include "set"
#include "map"
#include "vector"
 
using namespace std;
 
int preCalcMap[6526026];
int flowerCounts[26] = { 0 };
 
static set<int> present_flowers = {};
static map<int, int> min_x = {};
static map<int, int> max_x = {};
static map<int, int> min_y = {};
static map<int, int> max_y = {};

// Debug
int CALLS = 0;
 
int fieldSize = 0;
 
const unordered_map<char, int> flowerIndecies = { {'A',0},{'B',1},{'C',2},{'D',3},{'E',4},{'F',5},{'G',6},{'H',7},{'I',8},{'J',9},{'K',10},{'L',11},{'M',12},{'N',13},{'O',14},{'P',15},{'Q',16},{'R',17},{'S',18},{'T',19},{'U',20},{'V',21},{'W',22},{'X',23},{'Y',24},{'Z',25} };
 
static bool ContainsAllFlowers(int x1, int x2, int y1, int y2)
{
	++CALLS;
 
	int i1 = (y2 + 1) * 501 + x2 + 1;
	int i2 = y1 * 501 + x2 + 1;
	int i3 = (y2 + 1) * 501 + x1;
	int i4 = y1 * 501 + x1;
 
	for (int i = 0; i < 26; ++i)
	{
		if (flowerCounts[i] == 0)
		{
			continue;
		}
 
		//auto& flower = preCalcMap[i];
 
		int a = preCalcMap[i1 + i * 251001];
		int b = preCalcMap[i2 + i * 251001];
		int c = preCalcMap[i3 + i * 251001];
		int d = preCalcMap[i4 + i * 251001];
 
		if (a - b - c + d == 0)
		{
			return false;
		}
	}
 
	return true;
}
 
int lastSolution = -1;
 
static int Y2Solver(int min, int max, int x1, int x2, int y1)
{
	int localMin = min;
	int localMax = max;
 
	if (lastSolution != -1 && ContainsAllFlowers(x1, x2, y1, lastSolution))
	{
		return (max - lastSolution + 1);
	}
 
 
	int current = (min + max) / 2;
 
	bool first = true;
	int change = 0;
	bool wasSuccess = false;
 
	while (true)
	{
		if (ContainsAllFlowers(x1, x2, y1, current))
		{
			if (change == 1 && !wasSuccess)
			{
				break;
			}
			if (change == 0 && wasSuccess)
			{
				break;
			}
 
			localMax = current;
 
			change = (localMin + current) / 2 - current;
			current += change;
			wasSuccess = true;
		}
		else
		{
			if (change == -1 && wasSuccess)
			{
				++current;
				break;
			}
			if (change == 0 && !first)
			{
				return 0;
			}
 
 
			localMin = current;
			change = ceil((current + localMax) / 2.0f) - current;
			current += change;
			wasSuccess = false;
		}
		first = false;
	}
	lastSolution = current;
	return (max - current + 1);
}
 
int main()
{
	cin >> fieldSize;
 
	for (int y = 0; y < fieldSize; ++y)
	{
		string row;
		cin >> row;
 
		for (int x = 0; x < row.size(); ++x)
		{
			int flowerType = flowerIndecies.at(row[x]);
			//++flowerCounts[flowerType];
			
			if(present_flowers.contains(flowerType))
			{
				if(x < min_x[flowerType])
				{
					min_x[flowerType] = x;
				}
				if(x > max_x[flowerType])
				{
					max_x[flowerType] = x;
				}
				if(y < min_y[flowerType])
				{
					min_y[flowerType] = y;
				}
				if(y > max_y[flowerType])
				{
					max_y[flowerType] = y;
				}
			}
			else
			{
				present_flowers.insert(flowerType);
				min_x[flowerType] = x;
				max_x[flowerType] = x;
				min_y[flowerType] = y;
				max_y[flowerType] = y;
			}
		}
	}
	int count = 0;
	
	int x_min = 0;
	int y_min = 0;
	int x_max = fieldSize - 1;
	int y_max = fieldSize - 1;

	for(auto &flower : present_flowers)
	{
		if(min_x[flower] > x_min)
		{
			x_min = min_x[flower];
		}
		if(max_x[flower] < x_max)
		{
			x_max = max_x[flower];
		}
		if(min_y[flower] > y_min)
		{
			y_min = min_y[flower];
		}
		if(max_y[flower] < y_max)
		{
			y_max = max_y[flower];
		}
	}

	int top_shrink = y_max + 1;
	int bottom_shrink = fieldSize - y_min;
	int left_shrink = x_max + 1;
	int right_shrink = fieldSize - x_min;

	count = top_shrink * bottom_shrink * left_shrink * right_shrink;
	
	cout << count;
}

Test details

Test 1

Subtask: 1, 2, 3, 4, 5, 6

Verdict:

input
10
TNCTNPNTPC
NPPNTNTPTP
NTNTTCNTCT
NPCPNPPNTT
...

correct output
2035

user output
10000

Feedback: Incorrect character on line 1 col 1: expected "2035", got "10000"

Test 2

Subtask: 1, 2, 3, 4, 5, 6

Verdict:

input
10
NFWQLWNWYS
DZOQJVXFPJ
CNHXPXMCQD
QRTBVNLTQC
...

correct output
9

user output
12

Feedback: Incorrect character on line 1 col 1: expected "9", got "12"

Test 3

Subtask: 1, 2, 3, 4, 5, 6

Verdict:

input
10
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
...

correct output
3025

user output
10000

Feedback: Incorrect character on line 1 col 1: expected "3025", got "10000"

Test 4

Subtask: 1, 2, 3, 4, 5, 6

Verdict: ACCEPTED

input
10
FFFFFFFFFF
FFFFFCFFFF
FFFFFFJFFF
FFFFFFFFFF
...

correct output
12

user output
12

Test 5

Subtask: 1, 2, 3, 4, 5, 6

Verdict: ACCEPTED

input
1
X

correct output
1

user output
1

Test 6

Subtask: 2, 3, 4, 5, 6

Verdict:

input
20
BBCBUBOUOBBCUUBBCOUO
BOUCOOCUBCOOOCOBOCUO
UCCUUUOBCOCBCBUBUCOO
BUOBUCUCUOOBCOOUBUOO
...

correct output
38724

user output
160000

Feedback: Incorrect character on line 1 col 1: expected "38724", got "160000"

Test 7

Subtask: 2, 3, 4, 5, 6

Verdict:

input
20
CBGLSHGZHYZDWBNDBJUG
SMUXOJQYPXZDTMJUIWOJ
XIDSTNBGHKRKOVUVMINB
MTQGCFRUHQKALXRNCQGS
...

correct output
8334

user output
48384

Feedback: Incorrect character on line 1 col 1: expected "8334", got "48384"

Test 8

Subtask: 2, 3, 4, 5, 6

Verdict:

input
20
KKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKK
...

correct output
44100

user output
160000

Feedback: Incorrect character on line 1 col 1: expected "44100", got "160000"

Test 9

Subtask: 2, 3, 4, 5, 6

Verdict:

input
20
AAAAAAAAXAAAAAAAAAAA
AAAWAAAAAAAAAAAAAOAA
AAAAAAAAAAAAAAAAAPAA
AAAAAAAAKAAAAAAAAAAZ
...

correct output
18

user output
24

Feedback: Incorrect character on line 1 col 1: expected "18", got "24"

Test 10

Subtask: 3, 4, 5, 6

Verdict:

input
50
GRGREEEGREGXRXXEGXXREXGRRRGRRR...

correct output
1584665

user output
6250000

Feedback: Incorrect character on line 1 col 1: expected "1584665", got "6250000"

Test 11

Subtask: 3, 4, 5, 6

Verdict:

input
50
AITIISJUHCCRZNKSDCNQKYSQRINFWJ...

correct output
1077746

user output
5647152

Feedback: Incorrect character on line 1 col 1: expected "1077746", got "5647152"

Test 12

Subtask: 3, 4, 5, 6

Verdict:

input
50
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO...

correct output
1625625

user output
6250000

Feedback: Incorrect character on line 1 col 1: expected "1625625", got "6250000"

Test 13

Subtask: 3, 4, 5, 6

Verdict:

input
50
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...

correct output
1680

user output
3024

Feedback: Incorrect character on line 1 col 1: expected "1680", got "3024"

Test 14

Subtask: 4, 5, 6

Verdict:

input
100
NNCMDCDDCCNNNDNCMMNCDCDCCDCDNM...

correct output
25325366

user output
100000000

Feedback: Incorrect character on line 1 col 1: expected "25325366", got "100000000"

Test 15

Subtask: 4, 5, 6

Verdict:

input
100
LIMQQIHASECROEVILNVULGWZJPPKOG...

correct output
22342463

user output
100000000

Feedback: Incorrect character on line 1 col 1: expected "22342463", got "100000000"

Test 16

Subtask: 4, 5, 6

Verdict:

input
100
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT...

correct output
25502500

user output
100000000

Feedback: Incorrect character on line 1 col 1: expected "25502500", got "100000000"

Test 17

Subtask: 4, 5, 6

Verdict:

input
100
QXQQQQQQQQQQQQQQQQQQQQQQQQQQQQ...

correct output
25650

user output
150696

Feedback: Incorrect character on line 1 col 1: expected "25650", got "150696"

Test 18

Subtask: 5, 6

Verdict:

input
200
NAANANMMKNKKAKMKMAKNKMNKMMNNAA...

correct output
403292767

user output
1600000000

Feedback: Incorrect character on line 1 col 1: expected "403292767", got "1600000000"

Test 19

Subtask: 5, 6

Verdict:

input
200
OMYWATTLURKQPTKEFMGGYAOONXWVSC...

correct output
388111321

user output
1600000000

Feedback: Incorrect character on line 1 col 1: expected "388111321", got "1600000000"

Test 20

Subtask: 5, 6

Verdict:

input
200
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...

correct output
404010000

user output
1600000000

Feedback: Incorrect character on line 1 col 1: expected "404010000", got "1600000000"

Test 21

Subtask: 5, 6

Verdict:

input
200
LLLLLLLLLLLLLLLLLHLLLLLLLLLLLL...

correct output
14159445

user output
161406840

Feedback: Incorrect character on line 1 col 2: expected "14159445", got "161406840"

Test 22

Subtask: 6

Verdict:

input
500
VVHWVUHVHUWWWVUUUWVUUHUUWHWUVW...

correct output
15683003812

user output
-1924509440

Feedback: Incorrect character on line 1 col 1: expected "15683003812", got "-1924509440"

Test 23

Subtask: 6

Verdict:

input
500
OIMZGEQSBMBDSDXSWRFNKSGFEBBTJE...

correct output
15575906951

user output
-1924509440

Feedback: Incorrect character on line 1 col 1: expected "15575906951", got "-1924509440"

Test 24

Subtask: 6

Verdict:

input
500
IIIIIIIIIIIIIIIIIIIIIIIIIIIIII...

correct output
15687562500

user output
-1924509440

Feedback: Incorrect character on line 1 col 1: expected "15687562500", got "-1924509440"

Test 25

Subtask: 6

Verdict:

input
500
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW...

correct output
3058970930

user output
931977152

Feedback: Incorrect character on line 1 col 1: expected "3058970930", got "931977152"