Submission #573757

# Submission time Handle Problem Language Result Execution time Memory
573757 2022-06-07T07:26:55 Z Theo830 Art Class (IOI13_artclass) C++17
49 / 100
97 ms 10764 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll INF = 1e9+7;
ll MOD = 998244353;
typedef pair<ll,ll> ii;
#define iii pair<ll,ii>
#define f(i,a,b) for(ll i = a;i < b;i++)
#define pb push_back
#define vll vector<ll>
#define F first
#define S second
#define all(x) (x).begin(), (x).end()
///I hope I will get uprating and don't make mistakes
///I will never stop programming
///sqrt(-1) Love C++
///Please don't hack me
///@TheofanisOrfanou Theo830
///Think different approaches (bs,dp,greedy,graphs,shortest paths,mst)
///Stay Calm
///Look for special cases
///Beware of overflow and array bounds
///Think the problem backwards
#include "artclass.h"
/*
#ifndef __ARTCLASS_H__
#define __ARTCLASS_H__

#ifdef __cplusplus
extern "C" {
#endif

int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]);

#ifdef __cplusplus
}
#endif

#endif
#include <stdio.h>
static int DIM[2];
static int R[500][500];
static int G[500][500];
static int B[500][500];

int main() {
    FILE *in = fopen("artclass.txt", "r");
    if(in == NULL) {
        puts("Failed to open input file (artclass.txt).");
        return 0;
    }

    if(fscanf(in, "%d%d", DIM, DIM+1) != 2) {
        printf("Line 1: H, W must be integers\n");
        return 0;
    }
    if(DIM[0] < 100 || 500 < DIM[0]) {
        printf("Line 1: 100 <= H <= 500\n");
        return 0;
    }
    if(DIM[1] < 100 || 500 < DIM[1]) {
        printf("Line 1: 100 <= W <= 500\n");
        return 0;
    }
    for(int i = 0; i< DIM[0]; i++) {
       for(int j = 0; j < DIM[1]; j++) {
           if(fscanf(in, "%d%d%d", &R[i][j], &G[i][j], &B[i][j]) != 3) {
               printf("Line %d: R[i][j], G[i][j], B[i][j] must be integers", i*DIM[1]+j+2, i, j);
               return 0;
           }
           if(R[i][j] < 0 || 255 < R[i][j]) {
               printf("Line %d: 0 <= R[%d][%d] <= 255", i*DIM[1]+j+2, i, j);
               return 0;
           }
           if(G[i][j] < 0 || 255 < G[i][j]) {
               printf("Line %d: 0 <= G[%d][%d] <= 255", i*DIM[1]+j+2, i, j);
               return 0;
           }
           if(B[i][j] < 0 || 255 < B[i][j]) {
               printf("Line %d: 0 <= B[%d][%d] <= 255", i*DIM[1]+j+2, i, j);
               return 0;
           }
       }
    }

    printf("%d\n", style(DIM[0], DIM[1], R, G, B));
    return 0;
}
*/
int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
    ll n = H,m = W;
    ll posa = (n * m) / 3;
    ll polla = 35000;
    ll ans;
    set<ll>ex;
    ll prasina = 0;
    ll aspro = 0;
    ll mavro = 0;
    ll allages = 0;
    ll boxes = 0;
    ll exo[n][m];
    f(i,0,n){
        f(j,0,m){
            exo[i][j] = 0;
            ex.insert(R[i][j] + 256 * G[i][j] + 256 * 256 * B[i][j]);
            if(G[i][j] >= max({20,R[i][j] - 20,B[i][j] - 20})){
                prasina++;
            }
            if(min({G[i][j],R[i][j],B[i][j]}) >= 170){
                exo[i][j] = 1;
                if(i > 0 && exo[i-1][j] == 1){

                }
                else if(j > 0 && exo[i][j-1] == 1){

                }
                else{
                    boxes++;
                }
                aspro++;
            }
            if(max({G[i][j],R[i][j],B[i][j]}) <= 70 && max({G[i][j],R[i][j],B[i][j]}) - min({G[i][j],R[i][j],B[i][j]}) <= 20){
                mavro++;
            }
            if(j != 0){
                allages += (abs(G[i][j] - G[i][j-1]) + abs(B[i][j] - B[i][j-1]) + abs(R[i][j] - R[i][j-1])) >= 100;
            }
        }
    }
    if((ll)ex.size() >= 65000 || (polla <= (ll)ex.size() && allages >= (n * m) / 8)){
         if(prasina >= posa && allages <= posa){
            ans = 2;
         }
         else{
            ans = 3;
         }
    }
    else{
        if(aspro >= (n * m) / 8 && boxes >= 8){
            ans = 1;
        }
        else{
            ans = 4;
        }
    }
    return ans;
}
# Verdict Execution time Memory Grader output
1 Incorrect 80 ms 8028 KB Output isn't correct
2 Correct 65 ms 5724 KB Output is correct
3 Correct 76 ms 8396 KB Output is correct
4 Incorrect 74 ms 7164 KB Output isn't correct
5 Correct 77 ms 8316 KB Output is correct
6 Correct 47 ms 5836 KB Output is correct
7 Correct 64 ms 6128 KB Output is correct
8 Correct 75 ms 7860 KB Output is correct
9 Correct 78 ms 7644 KB Output is correct
10 Correct 60 ms 7688 KB Output is correct
11 Incorrect 74 ms 8052 KB Output isn't correct
12 Correct 55 ms 5580 KB Output is correct
13 Incorrect 67 ms 6772 KB Output isn't correct
14 Correct 76 ms 8752 KB Output is correct
15 Incorrect 97 ms 10764 KB Output isn't correct
16 Correct 79 ms 8572 KB Output is correct
17 Correct 66 ms 6988 KB Output is correct
18 Correct 48 ms 5016 KB Output is correct
19 Incorrect 76 ms 7148 KB Output isn't correct
20 Correct 61 ms 5676 KB Output is correct
21 Correct 43 ms 5408 KB Output is correct
22 Correct 79 ms 9292 KB Output is correct
23 Correct 86 ms 8924 KB Output is correct
24 Correct 39 ms 4836 KB Output is correct
25 Correct 54 ms 6988 KB Output is correct
26 Correct 65 ms 7696 KB Output is correct
27 Correct 85 ms 9588 KB Output is correct
28 Correct 57 ms 6080 KB Output is correct
29 Correct 46 ms 4392 KB Output is correct
30 Correct 73 ms 8160 KB Output is correct
31 Incorrect 62 ms 6304 KB Output isn't correct
32 Correct 80 ms 8012 KB Output is correct
33 Correct 75 ms 7972 KB Output is correct
34 Correct 52 ms 5600 KB Output is correct
35 Correct 62 ms 6632 KB Output is correct
36 Correct 54 ms 5700 KB Output is correct
37 Incorrect 64 ms 6572 KB Output isn't correct
38 Correct 62 ms 7888 KB Output is correct
39 Correct 40 ms 5580 KB Output is correct
40 Correct 45 ms 5368 KB Output is correct
41 Incorrect 43 ms 5352 KB Output isn't correct
42 Correct 37 ms 4428 KB Output is correct
43 Correct 78 ms 8704 KB Output is correct
44 Correct 47 ms 5900 KB Output is correct
45 Correct 44 ms 5320 KB Output is correct
46 Incorrect 61 ms 6480 KB Output isn't correct
47 Correct 36 ms 3728 KB Output is correct
48 Correct 63 ms 5808 KB Output is correct
49 Correct 43 ms 5536 KB Output is correct
50 Correct 65 ms 6304 KB Output is correct
51 Correct 49 ms 5436 KB Output is correct
52 Incorrect 54 ms 5068 KB Output isn't correct
53 Incorrect 59 ms 6360 KB Output isn't correct
54 Incorrect 55 ms 6156 KB Output isn't correct
55 Correct 55 ms 6032 KB Output is correct
56 Correct 72 ms 6752 KB Output is correct
57 Correct 34 ms 5204 KB Output is correct
58 Incorrect 86 ms 8268 KB Output isn't correct
59 Correct 67 ms 5656 KB Output is correct
60 Correct 79 ms 9148 KB Output is correct
61 Incorrect 52 ms 5612 KB Output isn't correct
62 Correct 58 ms 6540 KB Output is correct
63 Incorrect 55 ms 5216 KB Output isn't correct
64 Correct 76 ms 7852 KB Output is correct
65 Correct 74 ms 6620 KB Output is correct
66 Incorrect 72 ms 8188 KB Output isn't correct
67 Incorrect 59 ms 6636 KB Output isn't correct
68 Correct 45 ms 4684 KB Output is correct
69 Incorrect 51 ms 5112 KB Output isn't correct
70 Incorrect 85 ms 9420 KB Output isn't correct
71 Incorrect 56 ms 5196 KB Output isn't correct
72 Correct 82 ms 8960 KB Output is correct
73 Incorrect 66 ms 7212 KB Output isn't correct
74 Incorrect 61 ms 6284 KB Output isn't correct
75 Correct 58 ms 5640 KB Output is correct
76 Incorrect 59 ms 5332 KB Output isn't correct
77 Incorrect 87 ms 9456 KB Output isn't correct
78 Correct 61 ms 6080 KB Output is correct
79 Correct 46 ms 5684 KB Output is correct
80 Correct 67 ms 6948 KB Output is correct
81 Incorrect 82 ms 8848 KB Output isn't correct
82 Correct 80 ms 9008 KB Output is correct
83 Correct 48 ms 5324 KB Output is correct
84 Correct 66 ms 5748 KB Output is correct
85 Correct 56 ms 5580 KB Output is correct
86 Correct 57 ms 5344 KB Output is correct
87 Correct 83 ms 9680 KB Output is correct
88 Incorrect 57 ms 5628 KB Output isn't correct
89 Incorrect 73 ms 7360 KB Output isn't correct
90 Correct 74 ms 7976 KB Output is correct
91 Correct 43 ms 5764 KB Output is correct
92 Incorrect 68 ms 6532 KB Output isn't correct
93 Correct 40 ms 5064 KB Output is correct
94 Correct 15 ms 3852 KB Output is correct
95 Incorrect 81 ms 8640 KB Output isn't correct
96 Incorrect 18 ms 2388 KB Output isn't correct
97 Correct 58 ms 5852 KB Output is correct
98 Incorrect 58 ms 6552 KB Output isn't correct
99 Correct 60 ms 7872 KB Output is correct
100 Incorrect 54 ms 5744 KB Output isn't correct
101 Correct 66 ms 6392 KB Output is correct
102 Correct 50 ms 5500 KB Output is correct