Submission #573746

# Submission time Handle Problem Language Result Execution time Memory
573746 2022-06-07T06:51:16 Z Theo830 Art Class (IOI13_artclass) C++17
43 / 100
143 ms 9020 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) / 2;
    ll polla = 50000;
    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({50,R[i][j] - 10,B[i][j] - 10})){
              	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()){
         if(prasina >= posa / 2 && 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 79 ms 6592 KB Output isn't correct
2 Incorrect 51 ms 4312 KB Output isn't correct
3 Correct 116 ms 6308 KB Output is correct
4 Correct 76 ms 4556 KB Output is correct
5 Correct 63 ms 3304 KB Output is correct
6 Incorrect 45 ms 4804 KB Output isn't correct
7 Correct 97 ms 6908 KB Output is correct
8 Correct 64 ms 3608 KB Output is correct
9 Correct 61 ms 4448 KB Output is correct
10 Correct 111 ms 6624 KB Output is correct
11 Correct 73 ms 6580 KB Output is correct
12 Correct 65 ms 4840 KB Output is correct
13 Correct 64 ms 4484 KB Output is correct
14 Incorrect 98 ms 5732 KB Output isn't correct
15 Correct 64 ms 5008 KB Output is correct
16 Incorrect 94 ms 7888 KB Output isn't correct
17 Correct 66 ms 3960 KB Output is correct
18 Incorrect 76 ms 6416 KB Output isn't correct
19 Incorrect 125 ms 5188 KB Output isn't correct
20 Correct 92 ms 6784 KB Output is correct
21 Incorrect 89 ms 7776 KB Output isn't correct
22 Correct 91 ms 6656 KB Output is correct
23 Incorrect 98 ms 7376 KB Output isn't correct
24 Correct 69 ms 4252 KB Output is correct
25 Correct 59 ms 4636 KB Output is correct
26 Correct 89 ms 6344 KB Output is correct
27 Correct 71 ms 3880 KB Output is correct
28 Correct 106 ms 7256 KB Output is correct
29 Incorrect 76 ms 4848 KB Output isn't correct
30 Correct 74 ms 4552 KB Output is correct
31 Incorrect 21 ms 2000 KB Output isn't correct
32 Correct 103 ms 7904 KB Output is correct
33 Correct 64 ms 3444 KB Output is correct
34 Correct 83 ms 6380 KB Output is correct
35 Correct 79 ms 4516 KB Output is correct
36 Correct 90 ms 5532 KB Output is correct
37 Incorrect 101 ms 6324 KB Output isn't correct
38 Incorrect 106 ms 9020 KB Output isn't correct
39 Correct 49 ms 4072 KB Output is correct
40 Correct 95 ms 7652 KB Output is correct
41 Correct 143 ms 7032 KB Output is correct
42 Correct 42 ms 3888 KB Output is correct
43 Correct 95 ms 7252 KB Output is correct
44 Incorrect 49 ms 3764 KB Output isn't correct
45 Correct 87 ms 4792 KB Output is correct
46 Incorrect 68 ms 4812 KB Output isn't correct
47 Incorrect 70 ms 5132 KB Output isn't correct
48 Incorrect 72 ms 4828 KB Output isn't correct
49 Incorrect 63 ms 3756 KB Output isn't correct
50 Correct 49 ms 4044 KB Output is correct
51 Incorrect 90 ms 6484 KB Output isn't correct
52 Correct 62 ms 4100 KB Output is correct
53 Correct 48 ms 4504 KB Output is correct
54 Incorrect 70 ms 3832 KB Output isn't correct
55 Correct 73 ms 3768 KB Output is correct
56 Incorrect 68 ms 4160 KB Output isn't correct
57 Correct 71 ms 3956 KB Output is correct
58 Correct 52 ms 2764 KB Output is correct
59 Incorrect 49 ms 4888 KB Output isn't correct
60 Correct 90 ms 3800 KB Output is correct
61 Incorrect 91 ms 5200 KB Output isn't correct
62 Correct 46 ms 4288 KB Output is correct
63 Incorrect 70 ms 5036 KB Output isn't correct
64 Incorrect 84 ms 7132 KB Output isn't correct
65 Incorrect 65 ms 6108 KB Output isn't correct
66 Incorrect 85 ms 6348 KB Output isn't correct
67 Correct 94 ms 6448 KB Output is correct
68 Incorrect 62 ms 3540 KB Output isn't correct
69 Correct 49 ms 3800 KB Output is correct
70 Incorrect 46 ms 3608 KB Output isn't correct
71 Correct 116 ms 7428 KB Output is correct
72 Correct 46 ms 4188 KB Output is correct
73 Incorrect 84 ms 6796 KB Output isn't correct
74 Correct 119 ms 7704 KB Output is correct
75 Correct 114 ms 8120 KB Output is correct
76 Correct 64 ms 4044 KB Output is correct
77 Correct 73 ms 3968 KB Output is correct
78 Correct 72 ms 4716 KB Output is correct
79 Incorrect 73 ms 5016 KB Output isn't correct
80 Correct 77 ms 4508 KB Output is correct
81 Correct 86 ms 5676 KB Output is correct
82 Correct 64 ms 3220 KB Output is correct
83 Correct 75 ms 3696 KB Output is correct
84 Correct 64 ms 3924 KB Output is correct
85 Incorrect 80 ms 5376 KB Output isn't correct
86 Correct 68 ms 4496 KB Output is correct
87 Correct 100 ms 5336 KB Output is correct
88 Incorrect 100 ms 5336 KB Output isn't correct
89 Correct 79 ms 5256 KB Output is correct
90 Correct 78 ms 3600 KB Output is correct
91 Correct 17 ms 3340 KB Output is correct
92 Correct 58 ms 4696 KB Output is correct
93 Correct 90 ms 5592 KB Output is correct
94 Correct 74 ms 3792 KB Output is correct
95 Correct 109 ms 7628 KB Output is correct
96 Correct 55 ms 3916 KB Output is correct
97 Incorrect 81 ms 6604 KB Output isn't correct
98 Incorrect 96 ms 6216 KB Output isn't correct
99 Incorrect 65 ms 4448 KB Output isn't correct
100 Correct 46 ms 4412 KB Output is correct
101 Correct 94 ms 3708 KB Output is correct
102 Correct 43 ms 2636 KB Output is correct