Submission #1232777

#TimeUsernameProblemLanguageResultExecution timeMemory
1232777kaltspielerhyPaint By Numbers (IOI16_paint)C++20
0 / 100
0 ms320 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; string solve_puzzle(string s, vector<int> c) { int N = s.size(); int k = c.size(); vector<int> avances1(N, 0); int actuel = 0; for (int iCase = N-1; iCase >= 0; iCase--) { if (s[iCase] == '_') actuel = 0; else actuel++; avances1[iCase] = actuel; } vector<int> avances2(N, 0); actuel = 0; for (int iCase = 0; iCase < N; iCase++) { if (s[iCase] == '_') actuel = 0; else actuel++; avances2[iCase] = actuel; } vector<int> limites1(N, 0); int limiteAct = 0; int idx = 0; while (idx < N) { if (limiteAct < k && avances1[idx] >= c[limiteAct]) { limites1[idx+c[limiteAct]-1] = limiteAct+1; for (int i = idx; i < idx+c[limiteAct]-1; i++) { if (i < N) limites1[i] = limiteAct; } idx += c[limiteAct]; limiteAct++; } limites1[idx] = limiteAct; idx++; } vector<int> limites2(N, 0); limiteAct = k; idx = N-1; while (idx >= 0) { if (limiteAct > 0 && avances2[idx] >= c[limiteAct-1]) { limites2[idx-c[limiteAct-1]+1] = limiteAct-1; for (int i = idx; i > idx-c[limiteAct-1]+1; i--) { if (i >= 0) limites2[i] = limiteAct; } idx -= c[limiteAct-1]; limiteAct--; } limites2[idx] = limiteAct; idx--; } vector<bool> white(N, false); white[0] = (limites2[1] == 0); white[N-1] = (limites1[N-2] == k); for (int i = 1; i < N-1; i++) { white[i] = (limites1[i-1] >= limites2[i+1]); } vector<bool> black(N, false); for (int i = 0; i < N; i++) { black[i] = (limites1[i] >= limites2[i]); } string res; for (int i = 0; i < N; i++) { if (black[i] && white[i]) res.push_back('?'); else if (black[i]) res.push_back('X'); else res.push_back('_'); } return res; }

Compilation message (stderr)

paint.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
paint_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...