| Task: | Niitty | 
| Sender: | OnniHak | 
| Submission time: | 2024-11-10 18:26:03 +0200 | 
| Language: | C++ (C++17) | 
| Status: | READY | 
| Result: | 10 | 
| group | verdict | score | 
|---|---|---|
| #1 | ACCEPTED | 4 | 
| #2 | ACCEPTED | 6 | 
| #3 | TIME LIMIT EXCEEDED | 0 | 
| #4 | TIME LIMIT EXCEEDED | 0 | 
| #5 | TIME LIMIT EXCEEDED | 0 | 
| #6 | TIME LIMIT EXCEEDED | 0 | 
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.01 s | 1, 2, 3, 4, 5, 6 | details | 
| #2 | ACCEPTED | 0.00 s | 1, 2, 3, 4, 5, 6 | details | 
| #3 | ACCEPTED | 0.00 s | 1, 2, 3, 4, 5, 6 | details | 
| #4 | ACCEPTED | 0.00 s | 1, 2, 3, 4, 5, 6 | details | 
| #5 | ACCEPTED | 0.00 s | 1, 2, 3, 4, 5, 6 | details | 
| #6 | ACCEPTED | 0.01 s | 2, 3, 4, 5, 6 | details | 
| #7 | ACCEPTED | 0.06 s | 2, 3, 4, 5, 6 | details | 
| #8 | ACCEPTED | 0.01 s | 2, 3, 4, 5, 6 | details | 
| #9 | ACCEPTED | 0.01 s | 2, 3, 4, 5, 6 | details | 
| #10 | ACCEPTED | 0.34 s | 3, 4, 5, 6 | details | 
| #11 | TIME LIMIT EXCEEDED | -- | 3, 4, 5, 6 | details | 
| #12 | ACCEPTED | 0.08 s | 3, 4, 5, 6 | details | 
| #13 | ACCEPTED | 0.61 s | 3, 4, 5, 6 | details | 
| #14 | TIME LIMIT EXCEEDED | -- | 4, 5, 6 | details | 
| #15 | TIME LIMIT EXCEEDED | -- | 4, 5, 6 | details | 
| #16 | TIME LIMIT EXCEEDED | -- | 4, 5, 6 | details | 
| #17 | TIME LIMIT EXCEEDED | -- | 4, 5, 6 | details | 
| #18 | TIME LIMIT EXCEEDED | -- | 5, 6 | details | 
| #19 | TIME LIMIT EXCEEDED | -- | 5, 6 | details | 
| #20 | TIME LIMIT EXCEEDED | -- | 5, 6 | details | 
| #21 | TIME LIMIT EXCEEDED | -- | 5, 6 | details | 
| #22 | TIME LIMIT EXCEEDED | -- | 6 | details | 
| #23 | TIME LIMIT EXCEEDED | -- | 6 | details | 
| #24 | TIME LIMIT EXCEEDED | -- | 6 | details | 
| #25 | TIME LIMIT EXCEEDED | -- | 6 | details | 
Compiler report
input/code.cpp: In function 'std::set<char> getCarrots(const std::vector<std::vector<char> >&, int, int, int, int, int)':
input/code.cpp:40:9: warning: unused variable 'size' [-Wunused-variable]
   40 |     int size = static_cast<int>(list.size()),
      |         ^~~~Code
#include <bits/stdc++.h>
 
int oper=0;
 
std::set<char> getCarrots(const std::vector<std::vector<char>> &list, int maxCars, int sRow, int sCol, int eRow, int eCol);
 
int getSolution(int sideLen, const std::vector<std::vector<char>> &flowerGrid);
 
int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(NULL);
    int sideLen;
    char carrotInput;
    std::vector<char> nRow;
    std::vector<std::vector<char>> flowerGrid; 
 
    std::cin >> sideLen;
 
    for (int i=0; i<sideLen; i++) {
        for (int j=0; j<sideLen; j++) {
            std::cin >> carrotInput;
            nRow.push_back(carrotInput);
        }
        flowerGrid.push_back(nRow);
        nRow.clear();
    }
 
    int solution = getSolution(sideLen, flowerGrid);
 
    std::cout << solution;
 
 
    return 0;
}
 
 
std::set<char> getCarrots(const std::vector<std::vector<char>> &list, int maxCars, int sRow, int sCol, int eRow, int eCol) {
    std::set<char> returnSet;
    int size = static_cast<int>(list.size()),
        foundCars = 0;
 
    for (int i=sRow; i<=eRow; i++) {
        for (int j=sCol; j<=eCol; j++) {
            returnSet.insert(list[i][j]);
            foundCars = static_cast<int>(returnSet.size());
            if (foundCars == maxCars) return returnSet;
            oper++;
        }
    }
    return returnSet;
}
 
/*
bool checkElement(const std::vector<std::vector<char>> &grid, int maxCars, const std::set<char> &allCars) {
    int size = static_cast<int>(grid.size());
    std::set<char> carSet = getCarrots(grid, maxCars, 0, 0, size-1, size-1);
    if (carSet == allCars) return true;
    
    return false;
}
*/
 
int getSolution(int sideLen, const std::vector<std::vector<char>> &flowerGrid) {
    std::set<char> allCars = getCarrots(flowerGrid, sideLen*sideLen, 0, 0, sideLen-1, sideLen-1),
        subGridCars = allCars;
    
    std::vector<std::vector<char>> subGrid;
    int subgridAmount = 0,
    	uniqCarsAmount = static_cast<int>(allCars.size()),
        minW=1, maxW=sideLen, maxH=sideLen;
 
    for (int startRow=0; startRow < sideLen; startRow++) {
        for (int startCol=0; startCol < sideLen; startCol++) {
            maxH = sideLen-startRow;
            maxW = sideLen-startCol;
            if (maxW*maxH < uniqCarsAmount) break;
 
            subGridCars = getCarrots(flowerGrid, uniqCarsAmount, startRow, startCol, sideLen-1, sideLen-1);
            if (subGridCars != allCars) break;
            
            for (int h=1; h <= maxH; h++) {
                minW = uniqCarsAmount/h;
                minW += bool(!(uniqCarsAmount == h*minW));
                for (int w=minW; w<=maxW; w++) {
                    subGridCars = getCarrots(flowerGrid, uniqCarsAmount, startRow, startCol, startRow+h-1, startCol+w-1); // substract 1 cuz why not?
                    if (subGridCars == allCars) subgridAmount++;
                }
            }
        }
    }
    // std::cout << "\n" << oper << "\n";
    return subgridAmount;
}
Test details
Test 1
Group: 1, 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 10 TNCTNPNTPC NPPNTNTPTP NTNTTCNTCT NPCPNPPNTT ...  | 
| correct output | 
|---|
| 2035 | 
| user output | 
|---|
| 2035 | 
Test 2
Group: 1, 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 10 NFWQLWNWYS DZOQJVXFPJ CNHXPXMCQD QRTBVNLTQC ...  | 
| correct output | 
|---|
| 9 | 
| user output | 
|---|
| 9 | 
Test 3
Group: 1, 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 10 XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX ...  | 
| correct output | 
|---|
| 3025 | 
| user output | 
|---|
| 3025 | 
Test 4
Group: 1, 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 10 FFFFFFFFFF FFFFFCFFFF FFFFFFJFFF FFFFFFFFFF ...  | 
| correct output | 
|---|
| 12 | 
| user output | 
|---|
| 12 | 
Test 5
Group: 1, 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 1 X  | 
| correct output | 
|---|
| 1 | 
| user output | 
|---|
| 1 | 
Test 6
Group: 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 20 BBCBUBOUOBBCUUBBCOUO BOUCOOCUBCOOOCOBOCUO UCCUUUOBCOCBCBUBUCOO BUOBUCUCUOOBCOOUBUOO ...  | 
| correct output | 
|---|
| 38724 | 
| user output | 
|---|
| 38724 | 
Test 7
Group: 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 20 CBGLSHGZHYZDWBNDBJUG SMUXOJQYPXZDTMJUIWOJ XIDSTNBGHKRKOVUVMINB MTQGCFRUHQKALXRNCQGS ...  | 
| correct output | 
|---|
| 8334 | 
| user output | 
|---|
| 8334 | 
Test 8
Group: 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 20 KKKKKKKKKKKKKKKKKKKK KKKKKKKKKKKKKKKKKKKK KKKKKKKKKKKKKKKKKKKK KKKKKKKKKKKKKKKKKKKK ...  | 
| correct output | 
|---|
| 44100 | 
| user output | 
|---|
| 44100 | 
Test 9
Group: 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 20 AAAAAAAAXAAAAAAAAAAA AAAWAAAAAAAAAAAAAOAA AAAAAAAAAAAAAAAAAPAA AAAAAAAAKAAAAAAAAAAZ ...  | 
| correct output | 
|---|
| 18 | 
| user output | 
|---|
| 18 | 
Test 10
Group: 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 50 GRGREEEGREGXRXXEGXXREXGRRRGRRR...  | 
| correct output | 
|---|
| 1584665 | 
| user output | 
|---|
| 1584665 | 
Test 11
Group: 3, 4, 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 50 AITIISJUHCCRZNKSDCNQKYSQRINFWJ...  | 
| correct output | 
|---|
| 1077746 | 
| user output | 
|---|
| (empty) | 
Test 12
Group: 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 50 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO...  | 
| correct output | 
|---|
| 1625625 | 
| user output | 
|---|
| 1625625 | 
Test 13
Group: 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 50 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...  | 
| correct output | 
|---|
| 1680 | 
| user output | 
|---|
| 1680 | 
Test 14
Group: 4, 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100 NNCMDCDDCCNNNDNCMMNCDCDCCDCDNM...  | 
| correct output | 
|---|
| 25325366 | 
| user output | 
|---|
| (empty) | 
Test 15
Group: 4, 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100 LIMQQIHASECROEVILNVULGWZJPPKOG...  | 
| correct output | 
|---|
| 22342463 | 
| user output | 
|---|
| (empty) | 
Test 16
Group: 4, 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100 TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT...  | 
| correct output | 
|---|
| 25502500 | 
| user output | 
|---|
| (empty) | 
Test 17
Group: 4, 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100 QXQQQQQQQQQQQQQQQQQQQQQQQQQQQQ...  | 
| correct output | 
|---|
| 25650 | 
| user output | 
|---|
| (empty) | 
Test 18
Group: 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 200 NAANANMMKNKKAKMKMAKNKMNKMMNNAA...  | 
| correct output | 
|---|
| 403292767 | 
| user output | 
|---|
| (empty) | 
Test 19
Group: 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 200 OMYWATTLURKQPTKEFMGGYAOONXWVSC...  | 
| correct output | 
|---|
| 388111321 | 
| user output | 
|---|
| (empty) | 
Test 20
Group: 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 200 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...  | 
| correct output | 
|---|
| 404010000 | 
| user output | 
|---|
| (empty) | 
Test 21
Group: 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 200 LLLLLLLLLLLLLLLLLHLLLLLLLLLLLL...  | 
| correct output | 
|---|
| 14159445 | 
| user output | 
|---|
| (empty) | 
Test 22
Group: 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 500 VVHWVUHVHUWWWVUUUWVUUHUUWHWUVW...  | 
| correct output | 
|---|
| 15683003812 | 
| user output | 
|---|
| (empty) | 
Test 23
Group: 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 500 OIMZGEQSBMBDSDXSWRFNKSGFEBBTJE...  | 
| correct output | 
|---|
| 15575906951 | 
| user output | 
|---|
| (empty) | 
Test 24
Group: 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 500 IIIIIIIIIIIIIIIIIIIIIIIIIIIIII...  | 
| correct output | 
|---|
| 15687562500 | 
| user output | 
|---|
| (empty) | 
Test 25
Group: 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 500 WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW...  | 
| correct output | 
|---|
| 3058970930 | 
| user output | 
|---|
| (empty) | 
