Submission #1275270

#TimeUsernameProblemLanguageResultExecution timeMemory
1275270PetrixPaint By Numbers (IOI16_paint)C++20
Compilation error
0 ms0 KiB
#include <iostream>
#include "paint.h"
#include <vector>
using namespace std;

#define int long long
#define MOD 1000000007
int dp[200001][101];
int dp1[200001][101];
int pref1[200001];
int pref2[200001];

string solve_puzzle(string s,vector<int> c){
    string fina=s;int n=s.size(),m=c.size(),i,j,rasp;
	dp[0][0]=dp1[n+1][m]=1;s=" "+s;
	for(i=1;i<=n;i++){
		pref1[i]=pref1[i-1];
		if(s[i]=='_') pref1[i]++;
		pref2[i]=pref2[i-1];
		if(s[i]=='X') pref2[i]++;
	}
	for(i=1;i<=n+1;i++){
        for(j=0;j<=m;j++){
            if(s[i]!='X'){
                dp[i][j]=dp[i-1][j];
                if(j && i>c[j-1] && pref1[i-1]==pref1[i-1-c[j-1]]){
                    dp[i][j]+=dp[i-c[j-1]-1][j-1];dp[i][j]%=MOD;
                }
            }
        }
    }
    for(i=n;i;i--){
        for(j=0;j<=m;j++){
            if(s[i]!='X'){
                dp1[i][j]=dp1[i+1][j];
                if(j<m && n-i+1>c[j] && pref1[i]==pref1[i+c[j]]){
                    dp1[i][j]+=dp1[i+c[j]+1][j+1];dp1[i][j]%=MOD;
                }
            }
        }
    }
    for(i=1;i<=n;i++){
		rasp=0;
		for(j=0;j<=m;j++)
            rasp=(rasp+dp[i][j]*dp1[i][j])%MOD;
		if(!rasp) fina[i-1]='X';
		else if(rasp==dp[n+1][m]) fina[i-1]='_';
		else fina[i-1]='?';
	}
	return fina;
}

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
      |         ^~~~
/usr/bin/ld: /tmp/ccp6yvxS.o: in function `main':
grader.cpp:(.text.startup+0x20b): undefined reference to `solve_puzzle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status