Submission #573754

# Submission time Handle Problem Language Result Execution time Memory
573754 2022-06-07T07:07:10 Z Theo830 Art Class (IOI13_artclass) C++17
49 / 100
106 ms 9080 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;
    f(i,0,n){
        f(j,0,m){
            ex.insert(R[i][j] + 256 * G[i][j] + 256 * 256 * B[i][j]);
            if(G[i][j] >= max({70,R[i][j],B[i][j]})){
                prasina++;
            }
            if(min({G[i][j],R[i][j],B[i][j]}) >= 170){
                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(polla <= (ll)ex.size() && allages >= (n * m) / 8){
         if(prasina >= posa && allages <= posa){
            ans = 2;
         }
         else{
            ans = 3;
         }
    }
    else{
        if(aspro >= (n * m) / 8 && mavro >= (n * m) / 64){
            ans = 1;
        }
        else{
            ans = 4;
        }
    }
    return ans;
}
# Verdict Execution time Memory Grader output
1 Incorrect 83 ms 6664 KB Output isn't correct
2 Correct 44 ms 4876 KB Output is correct
3 Correct 45 ms 4780 KB Output is correct
4 Correct 39 ms 3528 KB Output is correct
5 Correct 43 ms 3784 KB Output is correct
6 Correct 51 ms 4692 KB Output is correct
7 Incorrect 78 ms 5752 KB Output isn't correct
8 Correct 46 ms 4100 KB Output is correct
9 Incorrect 83 ms 7228 KB Output isn't correct
10 Correct 102 ms 7512 KB Output is correct
11 Correct 63 ms 4700 KB Output is correct
12 Correct 78 ms 5360 KB Output is correct
13 Incorrect 60 ms 4824 KB Output isn't correct
14 Incorrect 81 ms 5196 KB Output isn't correct
15 Correct 60 ms 4040 KB Output is correct
16 Correct 85 ms 8100 KB Output is correct
17 Correct 81 ms 7280 KB Output is correct
18 Incorrect 19 ms 2008 KB Output isn't correct
19 Correct 55 ms 3368 KB Output is correct
20 Correct 54 ms 3912 KB Output is correct
21 Correct 64 ms 3756 KB Output is correct
22 Correct 74 ms 4632 KB Output is correct
23 Correct 69 ms 4296 KB Output is correct
24 Correct 66 ms 3788 KB Output is correct
25 Incorrect 86 ms 7008 KB Output isn't correct
26 Correct 49 ms 4300 KB Output is correct
27 Correct 61 ms 4152 KB Output is correct
28 Correct 79 ms 4596 KB Output is correct
29 Correct 91 ms 7884 KB Output is correct
30 Correct 16 ms 3328 KB Output is correct
31 Incorrect 89 ms 7260 KB Output isn't correct
32 Correct 48 ms 4476 KB Output is correct
33 Incorrect 83 ms 6148 KB Output isn't correct
34 Incorrect 70 ms 5520 KB Output isn't correct
35 Incorrect 103 ms 7104 KB Output isn't correct
36 Incorrect 61 ms 5068 KB Output isn't correct
37 Incorrect 67 ms 5136 KB Output isn't correct
38 Correct 68 ms 3916 KB Output is correct
39 Correct 55 ms 4592 KB Output is correct
40 Incorrect 79 ms 6444 KB Output isn't correct
41 Incorrect 59 ms 3628 KB Output isn't correct
42 Correct 47 ms 4080 KB Output is correct
43 Correct 56 ms 3896 KB Output is correct
44 Correct 49 ms 2756 KB Output is correct
45 Correct 41 ms 4396 KB Output is correct
46 Incorrect 87 ms 6316 KB Output isn't correct
47 Incorrect 92 ms 6336 KB Output isn't correct
48 Correct 59 ms 4384 KB Output is correct
49 Correct 57 ms 3196 KB Output is correct
50 Correct 59 ms 3900 KB Output is correct
51 Correct 64 ms 3724 KB Output is correct
52 Correct 51 ms 3972 KB Output is correct
53 Incorrect 75 ms 5708 KB Output isn't correct
54 Correct 50 ms 4236 KB Output is correct
55 Incorrect 51 ms 3792 KB Output isn't correct
56 Correct 106 ms 7628 KB Output is correct
57 Correct 57 ms 4544 KB Output is correct
58 Correct 68 ms 3712 KB Output is correct
59 Incorrect 63 ms 4812 KB Output isn't correct
60 Incorrect 60 ms 4136 KB Output isn't correct
61 Incorrect 77 ms 6220 KB Output isn't correct
62 Correct 61 ms 5072 KB Output is correct
63 Correct 78 ms 7148 KB Output is correct
64 Correct 95 ms 6520 KB Output is correct
65 Correct 61 ms 4900 KB Output is correct
66 Incorrect 52 ms 4664 KB Output isn't correct
67 Correct 58 ms 6076 KB Output is correct
68 Correct 61 ms 3676 KB Output is correct
69 Correct 68 ms 5344 KB Output is correct
70 Correct 76 ms 4852 KB Output is correct
71 Incorrect 86 ms 6660 KB Output isn't correct
72 Correct 90 ms 5144 KB Output is correct
73 Correct 38 ms 3820 KB Output is correct
74 Correct 92 ms 7912 KB Output is correct
75 Correct 57 ms 3960 KB Output is correct
76 Incorrect 71 ms 5656 KB Output isn't correct
77 Correct 76 ms 6752 KB Output is correct
78 Correct 73 ms 4940 KB Output is correct
79 Incorrect 64 ms 3836 KB Output isn't correct
80 Correct 53 ms 3276 KB Output is correct
81 Correct 64 ms 6660 KB Output is correct
82 Correct 68 ms 4544 KB Output is correct
83 Incorrect 85 ms 7700 KB Output isn't correct
84 Correct 42 ms 4292 KB Output is correct
85 Incorrect 88 ms 7456 KB Output isn't correct
86 Incorrect 67 ms 6476 KB Output isn't correct
87 Correct 76 ms 3812 KB Output is correct
88 Incorrect 82 ms 6768 KB Output isn't correct
89 Correct 69 ms 4560 KB Output is correct
90 Incorrect 72 ms 5264 KB Output isn't correct
91 Correct 80 ms 6388 KB Output is correct
92 Correct 77 ms 6572 KB Output is correct
93 Correct 83 ms 7812 KB Output is correct
94 Correct 75 ms 4372 KB Output is correct
95 Incorrect 63 ms 4796 KB Output isn't correct
96 Correct 61 ms 6716 KB Output is correct
97 Correct 63 ms 6460 KB Output is correct
98 Correct 54 ms 4004 KB Output is correct
99 Incorrect 63 ms 5152 KB Output isn't correct
100 Correct 99 ms 9080 KB Output is correct
101 Correct 44 ms 3712 KB Output is correct
102 Correct 36 ms 2644 KB Output is correct