# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
141654 |
2019-08-08T16:25:22 Z |
mariusnicoli |
Mate (COCI18_mate) |
C++14 |
|
2000 ms |
49028 KB |
/**
banana
1
2 na
**/
#include <iostream>
#include <cstring>
#include <vector>
#define MOD 1000000007
using namespace std;
char p, u, s[2002];
long long R[2002][26];
long long D[2002][26][26], sol[2002][26][26];
long long C[2002][2002];
vector<long long> poz[26];
long long n, i, j, k, t, L;
int main () {
cin>>s+1;
n = strlen(s+1);
C[0][0] = 1;
for (i=1;i<=n;i++) {
C[i][0] = 1;
for (j=1;j<=i;j++)
C[i][j] = (C[i-1][j-1] + C[i-1][j]) % MOD;
}
for (i=1;i<=n;i++)
poz[s[i]-'a'].push_back(i);
/// for (i=0;i<26;i++)
/// Last[i] = n+1;
for (i=n;i>=1;i--) {
for (j=0;j<26;j++)
if (s[i] == j+'a') {
R[i][j] = 1 + R[i+1][j];
/// Last[j] = i;
}
else {
R[i][j] = R[i+1][j];
/// Last[j] = Last[j+1];
}
}
for (i=n;i>=1;i--) {
for (j=0;j<26;j++)
for (k=0;k<26;k++)
if (s[i] == j+'a')
D[i][j][k] = /**D[i+1][j][k] +**/ R[i+1][k];
else
D[i][j][k] = D[i+1][j][k];
}
for (L=2;L<=n;L++)
for (j=0;j<26;j++)
for (t=0;t<poz[j].size();t++) {
i=poz[j][t];
if (i >= L-1)
for (k=0;k<26;k++) {
sol[L][j][k] += ((D[i][j][k] * C[i-1][L-2])%MOD);
sol[L][j][k] %= MOD;
}
}
cin>>t;
for (;t--;) {
cin>>L>>p>>u;
cout<<sol[L][p-'a'][u-'a'];
}
return 0;
}
Compilation message
mate.cpp: In function 'int main()':
mate.cpp:18:11: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
cin>>s+1;
~^~
mate.cpp:56:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (t=0;t<poz[j].size();t++) {
~^~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
87 ms |
1144 KB |
Output isn't correct |
2 |
Incorrect |
58 ms |
1128 KB |
Output isn't correct |
3 |
Incorrect |
67 ms |
1016 KB |
Output isn't correct |
4 |
Incorrect |
114 ms |
1272 KB |
Output isn't correct |
5 |
Incorrect |
410 ms |
4368 KB |
Output isn't correct |
6 |
Incorrect |
464 ms |
4504 KB |
Output isn't correct |
7 |
Incorrect |
353 ms |
4104 KB |
Output isn't correct |
8 |
Incorrect |
320 ms |
4064 KB |
Output isn't correct |
9 |
Execution timed out |
2064 ms |
49028 KB |
Time limit exceeded |
10 |
Execution timed out |
2063 ms |
48868 KB |
Time limit exceeded |