Submission #724206

# Submission time Handle Problem Language Result Execution time Memory
724206 2023-04-14T21:28:36 Z Urvuk3 Art Class (IOI13_artclass) C++17
49 / 100
89 ms 25560 KB
#include "artclass.h"
#include <bits/stdc++.h>

using namespace std;

#define ll long long
const int INF=1e9;
const ll LINF=1e18;
#define fi first
#define se second
#define pii pair<int,int>
#define mid ((l+r)/2)
#define sz(a) (int((a).size()))
#define all(a) a.begin(),a.end()
#define endl "\n"
#define pb push_back

void PRINT(int x) {cerr << x;}
void PRINT(ll x) {cerr << x;}
void PRINT(double x) {cerr << x;}
void PRINT(char x) {cerr << '\'' << x << '\'';}
void PRINT(string x) {cerr << '\"' << x << '\"';}
void PRINT(bool x) {cerr << (x ? "true" : "false");}

template<typename T,typename V>
void PRINT(pair<T,V>& x){
    cerr<<"{";
    PRINT(x.fi);
    cerr<<",";
    PRINT(x.se);
    cerr<<"}";
}
template<typename T>
void PRINT(T &x){
    int id=0;
    cerr<<"{";
    for(auto _i:x){
        cerr<<(id++ ? "," : "");
        PRINT(_i);
    }
    cerr<<"}";
}
void _PRINT(){
    cerr<<"]\n";
}
template<typename Head,typename... Tail>
void _PRINT(Head h,Tail... t){
    PRINT(h);
    if(sizeof...(t)) cerr<<", ";
    _PRINT(t...);
}

#define Debug(x...) cerr<<"["<<#x<<"]=["; _PRINT(x)

int Hg,Wg;
bool visited[500][500];
int Rg[500][500],Gg[500][500],Bg[500][500];
vector<int> di,dj;
int comps;

bool Valid(int i,int j){
    return (0<=i && i<Hg) && (0<=j && j<Wg);
}

void Dfs(int i,int j){
    visited[i][j]=true;
    for(int d=0;d<4;d++){
        int i1=i+di[d];
        int j1=j+dj[d];
        if(!Valid(i1,j1)) continue;
        ll dif=0;
        dif+=abs(Rg[i][j]-Rg[i1][j1]);
        dif+=abs(Gg[i][j]-Gg[i1][j1]);
        dif+=abs(Bg[i][j]-Bg[i1][j1]);
        if(!visited[i1][j1] && dif<=20){
            Dfs(i1,j1);
        }
    }
}

bool In(int x,int l,int r){
    return (l<=x && x<=r);
}

int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
    Hg=H,Wg=W;
    di={-1,1};
    dj={0,0};
    ll Rv=0,Gv=0,Bv=0;
    ll greens=0,yellows=0;
    for(int i=0;i<Hg;i++){
        for(int j=0;j<Wg;j++){
            Rg[i][j]=R[i][j];
            Gg[i][j]=G[i][j];
            Bg[i][j]=B[i][j];
            if(G[i][j]>R[i][j] && G[i][j]>B[i][j] && G[i][j]-R[i][j]+G[i][j]-B[i][j]>70) greens++;
            if(abs(R[i][j]-G[i][j])<=10 && max(R[i][j],G[i][j])-B[i][j]>50) yellows++;
            for(int d=0;d<2;d++){
                int i1=i+di[d];
                int j1=j+dj[d];
                if(Valid(i1,j1)){
                    Rv+=abs(R[i][j]-R[i1][j1]);
                    Gv+=abs(G[i][j]-G[i1][j1]);
                    Bv+=abs(B[i][j]-B[i1][j1]);
                }
            }
        }
    }
    di={0,0};
    dj={-1,1};
    ll Rh=0,Gh=0,Bh=0;
    for(int i=0;i<Hg;i++){
        for(int j=0;j<Wg;j++){
            for(int d=0;d<2;d++){
                int i1=i+di[d];
                int j1=j+dj[d];
                if(Valid(i1,j1)){
                    Rh+=abs(R[i][j]-R[i1][j1]);
                    Gh+=abs(G[i][j]-G[i1][j1]);
                    Bh+=abs(B[i][j]-B[i1][j1]);
                }
            }
        }
    }
    di={-1,0,1,0};
    dj={0,1,0,-1};
    for(int i=0;i<H;i++){
        for(int j=0;j<W;j++){
            if(!visited[i][j]){
                Dfs(i,j);
                comps++;
            }
        }
    }
    Debug(yellows,greens);
    vector<ll> ret={Rv,Gv,Bv,Rh,Gh,Bh};
    for(int i=0;i<sz(ret);i++) ret[i]/=(H*W);
    bool b3=true;
    for(int i=0;i<6;i++) b3&=In(ret[i],33,100);
    if(b3) return 3;
    if(greens>=10000 || yellows>7000) return 2;
    bool b1=true;
    for(int i=0;i<3;i++) b1&=In(ret[i],6,20);
    b1|=(comps!=11503);
    if(b1) return 1;
    bool b2=true;
    for(int i=0;i<6;i++) b2&=In(ret[i],13,50);
    if(b2) return 2;
    return 4;
}
# Verdict Execution time Memory Grader output
1 Correct 50 ms 5108 KB Output is correct
2 Correct 67 ms 10688 KB Output is correct
3 Correct 59 ms 5964 KB Output is correct
4 Incorrect 19 ms 8948 KB Output isn't correct
5 Correct 49 ms 6436 KB Output is correct
6 Incorrect 63 ms 25560 KB Output isn't correct
7 Incorrect 65 ms 9400 KB Output isn't correct
8 Correct 38 ms 5324 KB Output is correct
9 Correct 42 ms 3328 KB Output is correct
10 Correct 53 ms 6176 KB Output is correct
11 Correct 89 ms 11400 KB Output is correct
12 Correct 37 ms 9868 KB Output is correct
13 Correct 49 ms 5220 KB Output is correct
14 Correct 59 ms 5568 KB Output is correct
15 Correct 62 ms 5172 KB Output is correct
16 Correct 41 ms 6348 KB Output is correct
17 Incorrect 69 ms 6532 KB Output isn't correct
18 Correct 41 ms 4152 KB Output is correct
19 Correct 53 ms 5452 KB Output is correct
20 Correct 47 ms 6644 KB Output is correct
21 Correct 70 ms 12400 KB Output is correct
22 Incorrect 49 ms 4812 KB Output isn't correct
23 Incorrect 64 ms 18048 KB Output isn't correct
24 Correct 54 ms 6048 KB Output is correct
25 Incorrect 58 ms 12368 KB Output isn't correct
26 Incorrect 56 ms 19892 KB Output isn't correct
27 Correct 34 ms 3524 KB Output is correct
28 Correct 26 ms 2672 KB Output is correct
29 Correct 58 ms 6420 KB Output is correct
30 Correct 55 ms 6420 KB Output is correct
31 Correct 57 ms 7728 KB Output is correct
32 Correct 67 ms 8916 KB Output is correct
33 Incorrect 65 ms 22056 KB Output isn't correct
34 Correct 50 ms 6352 KB Output is correct
35 Correct 44 ms 6392 KB Output is correct
36 Incorrect 56 ms 19024 KB Output isn't correct
37 Correct 68 ms 6792 KB Output is correct
38 Incorrect 77 ms 8904 KB Output isn't correct
39 Correct 63 ms 4684 KB Output is correct
40 Correct 42 ms 5272 KB Output is correct
41 Correct 52 ms 8504 KB Output is correct
42 Correct 46 ms 4808 KB Output is correct
43 Correct 52 ms 6452 KB Output is correct
44 Incorrect 57 ms 20236 KB Output isn't correct
45 Correct 78 ms 6388 KB Output is correct
46 Correct 55 ms 6476 KB Output is correct
47 Correct 56 ms 6336 KB Output is correct
48 Incorrect 70 ms 12680 KB Output isn't correct
49 Correct 77 ms 10868 KB Output is correct
50 Incorrect 48 ms 12972 KB Output isn't correct
51 Incorrect 44 ms 15648 KB Output isn't correct
52 Correct 62 ms 7304 KB Output is correct
53 Correct 57 ms 7152 KB Output is correct
54 Correct 27 ms 2716 KB Output is correct
55 Correct 73 ms 11688 KB Output is correct
56 Correct 55 ms 5492 KB Output is correct
57 Correct 65 ms 11244 KB Output is correct
58 Correct 62 ms 6356 KB Output is correct
59 Correct 55 ms 5680 KB Output is correct
60 Correct 32 ms 3404 KB Output is correct
61 Correct 56 ms 6348 KB Output is correct
62 Incorrect 52 ms 5336 KB Output isn't correct
63 Incorrect 60 ms 17052 KB Output isn't correct
64 Incorrect 60 ms 14892 KB Output isn't correct
65 Incorrect 46 ms 16828 KB Output isn't correct
66 Incorrect 63 ms 19584 KB Output isn't correct
67 Correct 66 ms 12036 KB Output is correct
68 Correct 38 ms 6288 KB Output is correct
69 Correct 64 ms 7312 KB Output is correct
70 Correct 13 ms 1460 KB Output is correct
71 Incorrect 54 ms 17740 KB Output isn't correct
72 Correct 54 ms 4080 KB Output is correct
73 Correct 52 ms 5528 KB Output is correct
74 Correct 51 ms 4796 KB Output is correct
75 Correct 57 ms 5376 KB Output is correct
76 Incorrect 52 ms 14684 KB Output isn't correct
77 Incorrect 56 ms 12668 KB Output isn't correct
78 Correct 68 ms 6476 KB Output is correct
79 Incorrect 45 ms 17660 KB Output isn't correct
80 Correct 34 ms 3400 KB Output is correct
81 Correct 41 ms 7860 KB Output is correct
82 Incorrect 48 ms 18444 KB Output isn't correct
83 Incorrect 45 ms 13408 KB Output isn't correct
84 Incorrect 60 ms 20656 KB Output isn't correct
85 Correct 42 ms 4068 KB Output is correct
86 Correct 58 ms 6948 KB Output is correct
87 Incorrect 59 ms 16268 KB Output isn't correct
88 Correct 49 ms 4844 KB Output is correct
89 Correct 53 ms 7500 KB Output is correct
90 Incorrect 55 ms 17812 KB Output isn't correct
91 Correct 27 ms 2908 KB Output is correct
92 Correct 55 ms 5324 KB Output is correct
93 Incorrect 59 ms 6920 KB Output isn't correct
94 Correct 51 ms 5280 KB Output is correct
95 Incorrect 76 ms 24020 KB Output isn't correct
96 Correct 54 ms 8752 KB Output is correct
97 Incorrect 53 ms 4992 KB Output isn't correct
98 Correct 68 ms 11084 KB Output is correct
99 Correct 41 ms 10244 KB Output is correct
100 Incorrect 45 ms 17764 KB Output isn't correct
101 Correct 55 ms 7944 KB Output is correct
102 Correct 58 ms 7776 KB Output is correct